Go实现简单的几个排序算法

  冒泡排序

func bubbleSort(arr []int) []int {
	length := len(arr)
	for i :=0;i<length;i++{
		for j :=0;j<length-1-i;j++{
			if arr[j] >arr[j+1]{
				arr[j],arr[j+1] = arr[j+1],arr[j]
			}
		}
	}
	return arr
}

  快速排序

func QuickSort(arr []int) []int  {
	if len(arr)<2{
		return arr
	}
	mid := arr[0]
	var left,right []int
	for i :=1;i<len(arr);i++{
		if arr[i]>mid{
			right = append(right,arr[i])
		}else{
			left = append(left,arr[i])
		}
	}
	left = QuickSort(left)
	right = QuickSort(right)
	left = append(left,mid)
	return append(left,right...)
}

  选择排序

func SelectSort(arr []int) []int  {
	for i:=0;i<len(arr)-1;i++{
		min :=i
		for j :=i+1;j<len(arr);j++{
			if arr[min]>arr[j]{
				min = j
			}
		}
		arr[i],arr[min] = arr[min],arr[i]
	}

	return arr
}

  插入排序

func InsertSort(arr []int) []int {
	for i :=range arr{
		preIndex :=i-1
		current := arr[i]
		for preIndex >=0 && arr[preIndex] >current{
			arr[preIndex+1] = arr[preIndex]
			preIndex -=1
		}
		arr[preIndex+1] = current
	}
	return arr
}

  

性能测试结果

 

posted @ 2021-01-22 10:46  pebblecome  阅读(81)  评论(0)    收藏  举报