栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

go实现的经典排序算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go实现的经典排序算法

冒泡排序/选择排序/直接插入/归并排序/快排

package	 main

import "fmt"

func swap(arr *[]int, m,n int){
	temp := (*arr)[m]
	(*arr)[m] = (*arr)[n]
	(*arr)[n] = temp
}

// 冒泡排序
//外层循环是比较的趟数,内层循环是每一趟冒泡:比较相邻的两个数,交换较小者在前,使最小者慢慢浮上来
func bubbleSort(arr *[]int){
	length := len(*arr)
	if length == 0{
		return
	}
	for i := length-1;i>=0;i--{
		for j := length-1;j>=length-i;j--{
			if (*arr)[j] < (*arr)[j-1]{
				swap(arr,j,j-1)
			}
		}
	}
}

func TestBubbleSort(){
	var arr = []int{4,7,3,8,1,5,2,9,6}
	bubbleSort(&arr)
	fmt.Println("冒泡:",arr)
}

//直接插入排序
//将数组分为两部分,前者是有序的,后者是无序的,
//每一趟从无序数组中选择第一个,插入到有序数组正确的位置
func insertSort(arr *[]int){
	length := len(*arr)
	if length == 0{
		return
	}
	for i:=1;i=1;j--{
			if (*arr)[j] < (*arr)[j-1]{
				swap(arr,j,j-1)
			}
		}
	}
}

func TestInsertSort(){
	var arr = []int{4,7,3,8,1,5,2,9,6}
	insertSort(&arr)
	fmt.Println("直接插入:",arr)
}

//选择排序
//从无序数组红选择一个最小的 放到第一位,再选择一个第二小的,放在第二位,依次类推
func chooseSort(arr *[]int){
	length := len(*arr)
	if length == 0{
		return
	}
	for i:=0;i=i;j--{
			if (*arr)[j] < (*arr)[minIndex]{
				minIndex = j
			}
		}
		swap(arr,i,minIndex)
	}
}

func TestChooseSort(){
	var arr = []int{4,7,3,8,1,5,2,9,6}
	chooseSort(&arr)
	fmt.Println("直接选择:",arr)
}

//归并排序
// 先划分成长度为length/2 的子数组,继续将子数组划分成长度为length/4,直到长度=1,进行merge
func mergeSort(arr *[]int){
	length := len(*arr)
	if length == 0{
		return
	}
	mergeSortByLen(arr,0,length-1)
}

func mergeSortByLen(arr *[]int, low,high int){
	if low pivot{
			high --
		}
		if low < high{
			(*arr)[low] = (*arr)[high]
			low++
		}
		for low 1{
		quick(arr,left,low-1)
	}
	if right-low > 1{
		quick(arr,low+1,right)
	}
}

func TestQuickSort(){
	var arr = []int{7,9,1,4,2,5,3,6,8}
	QuickSort(&arr)
	fmt.Println("快排:",arr)
}

func TestSort(){
	TestBubbleSort()
	TestInsertSort()
	TestChooseSort()
	TestMergeSort()
	TestQuickSort()
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号