随笔练习:五种排序算法 --- golang

2021-05-14 06:28

阅读:679

标签:ret   select   lse   end   style   quick   sort   UNC   ++   

func merge(left,right []int) (result []int) {

    r,l := 0,0
    for l  len(right) {
        if left[l]  right[r]{
            result = append(result,left[l])
            l++
        }else {
            result = append(result,right[r])
            r++
        }
    }
    result = append(result,left[l:]...)
    result = append(result,right[r:]...)
    return
}

// 归并
func merget_sort(arr []int) []int {
    if len(arr) 1{
        return arr
    }

    mid := len(arr) / 2
    left := merget_sort(arr[:mid])
    right := merget_sort(arr[mid:])

    return merge(left,right)
}

// 冒泡
func bubble_sort(arr []int) []int {
    if len(arr) 1{
        return arr
    }

    for i:=0;i{
        for j:=0;j1;j++{
            if arr[j] > arr[j+1]{
                arr[j],arr[j+1] = arr[j+1],arr[j]
            }
        }
    }
    return arr
}

// 快速
func quick_sort(arr []int) []int  {
    if len(arr)1{
        return arr
    }
    mid,i := arr[0],1
    head,tail := 0,len(arr)-1
    for head  tail{
        if arr[i] > mid {
            arr[tail],arr[i] = arr[i],arr[tail]
            tail--
        }else {
                arr[head],arr[i] = arr[i],arr[head]
                head++
                i++
        }
    }
    arr[head] = mid
    quick_sort(arr[:head])
    quick_sort(arr[head+1:])
    return arr
}

// 选择
func select_sort(arr []int)[]int{
    if len(arr)1{
        return arr
    }

    for i:=0;i{
        c := i
        for j:=i;j{
            if arr[j]  arr[c] {
                c = j
            }
        }
        arr[c],arr[i] = arr[i],arr[c]
    }

    return arr
}

// 插入
func insert_sort(arr []int)[]int{
    if len(arr)1{
        return arr
    }
    for i:=1;i{
        c := i
        for c > 0 {
            if arr[c] 1]{
                arr[c],arr[c-1] =arr[c-1],arr[c]
            }
            c--
        }
    }

    return arr
}

 

随笔练习:五种排序算法 --- golang

标签:ret   select   lse   end   style   quick   sort   UNC   ++   

原文地址:https://www.cnblogs.com/zengxm/p/13125743.html


评论


亲,登录后才可以留言!