![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang十大经典算法
还是无聊的人~
这个作者很懒,什么都没留下…
展开
-
golang实现十大经典算法:快速排序
快速排序中心点就是定义一个pivot,将小于piovt的放左边,大于pivot放右边,再不断循环这过程直到有序golang代码实现func main(){ l := []int{0,0,0,14124,124124,1} quicksort(l,0,len(l)-1)}func partion(a []int,start int ,end int) int { pivot,i,j :...原创 2019-07-01 14:49:54 · 475 阅读 · 0 评论 -
golang实现十大经典算法:插入排序
插入排序的要点是找一个合理的位置插进入插入排序优点:原数组有序会非常快,稳定golang数组没有插入的操作,所以得自己实现 a := []int{1,3,4,52,2,5,7,3,7,9} for i:=1;i<len(a);i++{ todo := true for j:=i-1;j>=0;j--{ if a[j]<a[i]{ todo = fal...原创 2019-07-01 16:39:38 · 178 阅读 · 0 评论 -
golang实现十大经典算法:归并排序
归并排序要点,不断二分并排序,直到最后两个大的有序合并归并排序优点:时间复杂度:log(n),有序归并排序缺点:需要大量空间func merge(a[]int,b[]int)[]int{ l := []int{} for len(a)>0&&len(b)>0{ if a[0]<b[0]{ l = append(l,a[0]) a = ap...原创 2019-07-01 18:38:56 · 226 阅读 · 0 评论 -
golang实现十大经典算法:堆排序
堆排序要点是运用堆的特点:最大堆前一半都是父节点堆排序的优点:已有最大堆,排序会快func main(){ a := []int{0,1,2,4,5,6,7,8,9,10}//注意0是开头,必定存在 heapSort(a,len(a)-1)}func shiftDown(a[]int,n int,i int){//下沉 for i*2<=n{ i = i*2 if i+...原创 2019-07-02 15:58:40 · 233 阅读 · 0 评论 -
golang实现十大经典算法:冒泡排序
冒泡排序要点:两两比较,每次都浮出最大的那个冒泡排序优点:稳定,不需要额外空间,时间较长func bubSort(a[]int,n int){ for i:=n;i>0;i--{//总共浮出来的个数 for j:=0;j<i-1;j++{ if a[j]>a[j+1]{ a[j],a[j+1]= a[j+1],a[j] } } }}...原创 2019-07-02 18:10:05 · 140 阅读 · 0 评论 -
golang实现十大经典算法:选择排序
选择排序要点:每次都选出最大的,放到位置上选择排序:时间较长,不稳定func selectSort(a[]int ,n int){ for i:=n;i>=0;i--{ max := i for j:=0;j<i;j++{ if a[j]>a[max]{ max = j } } a[max],a[i]=a[i],a[max] }}...原创 2019-07-02 18:12:23 · 266 阅读 · 0 评论