go语言算法

1.冒泡排序算法

func bsort(a []int)  {
	for i:=0;i<=len(a);i++{
		for j:=1;j<len(a)-i;j++{
			if a[j] < a[j-1]{
				a[j],a[j-1] = a[j-1],a[j]
			}
		}
	}

}
func main()  {
    a :=[]int{1,9,5,7,3,8,23,0}

   bsort(a)
   fmt.Println(a)
}

2.选择排序算法

func ssort(n []int)  {
	for i:=0;i<len(n);i++{
		//记住下标
		var min int = i
		for j:=i+1;j<len(n);j++{
			if n[min]>n[j]{
				 min = j
			}
			n[i],n[min] = n[min],n[i]
		}
	}
}
func main()  {
    a :=[]int{1,9,5,7,3,8,23,0}

    ssort(a)
    fmt.Println(a)
}

3.插入排序算法

//插入排序
func isort(n []int)  {
	for i:=1;i<len(n);i++{
		for j:=i;j>0;j--{
			if n[j]>n[j-1]{
				break
			}else{
				n[j],n[j-1] = n[j-1],n[j]
			}
		}
	}
}

func main()  {
    a :=[]int{1,9,5,7,3,8,23,0}
    isort(a)
    fmt.Println(a)
}

4.快排算法

//快排
func qsort(a []int,left,right int)  {
	if left >=right{
		return
	}
	val :=a[left]
	k := left
	for i :=left+1;i<=right;i++{
		if a[i]<val{
			a[k] =a[i]
			a[i] =a[k+1]
			k++
		}
	}
	a[k] = val
	qsort(a,left,k-1)
	qsort(a,k+1,right)
}
func main()  {
	//定义一个列表,列表是值类型,可以通过切片转成引用类型
	b :=[...]int{8,7,5,4,10,2,9}
	qsort(b[:],0,len(b)-1)
	fmt.Println(b)
}
posted @ 2020-08-13 15:25  MiaoQinHong  阅读(442)  评论(0编辑  收藏  举报