zoukankan      html  css  js  c++  java
  • 随笔练习:五种排序算法 --- golang

    func merge(left,right []int) (result []int) {
    
        r,l := 0,0
        for l < len(left) && r < 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<len(arr);i++{
            for j:=0;j<len(arr)-i-1;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<len(arr);i++{
            c := i
            for j:=i;j<len(arr);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<len(arr);i++{
            c := i
            for c > 0 {
                if arr[c] < arr[c-1]{
                    arr[c],arr[c-1] =arr[c-1],arr[c]
                }
                c--
            }
        }
    
        return arr
    }
  • 相关阅读:
    apue第16章笔记
    重构与重写
    架构方面的笔记
    多进程失败拉起的demo
    Elasticsearch match_phrase用法
    c++风格
    cocos2d-x 3.2 移植到android
    Mac 下配置 Cocos2d-x 3-x android 的环境
    解决最新版的ADT没有NDK选项的问题
    待飞日记(第六天和第七天)
  • 原文地址:https://www.cnblogs.com/zengxm/p/13125743.html
Copyright © 2011-2022 走看看