zoukankan      html  css  js  c++  java
  • Go语言实现快速排序+python

    快速排序是经典, 快速, 简洁的排序算法, 平均时间复杂度O(nlogn), 不稳定排序

    先用Python实现一遍, 可以很容易看出思路

    def quick_sort(arr):
        if not arr:
            return []
        first = arr[0]
        left = quick_sort([c for c in arr[1:] if c < first])
        right = quick_sort([c for c in arr[1:] if c >= first])
        return left + [first] + right
    
    if __name__ == '__main__':
        print(quick_sort([]))
        print(quick_sort([1,4,2,100,8,3,6,8,1,7]))
    

    再用Go实现一遍 完全相同的思路

    由于没有python的列表生成式和三元运算符, 代码稍显复杂

    package main
    
    import "fmt"
    
    func QuickSort(arr []int) []int {
    	if len(arr) == 0 {
    		return []int{}
    	} else {
    		first := arr[0]
    		var (
    			leftArr  []int
    			rightArr []int
    		)
    		for _, c := range arr[1:] {
    			if c < first {
    				leftArr = append(leftArr, c)
    			} else {
    				rightArr = append(rightArr, c)
    			}
    		}
    		left := QuickSort(leftArr)
    		right := QuickSort(rightArr)
    		return append(append(left, first), right...)
    	}
    
    }
    func main()  {
    	fmt.Println(QuickSort([]int{}))
    	fmt.Println(QuickSort([]int{1,4,2,100,8,3,6,8,1,7}))
    }
    
  • 相关阅读:
    项目Beta冲刺(团队) --1/7
    Beta:凡事预则立
    事后诸葛亮(葫芦娃队)
    项目问题回复
    Alpha冲刺阶段总结
    Alpha冲刺笔记十:第十天
    Alpha冲刺随笔九:第九天
    项目测试用例
    Alpha冲刺随笔八:第八天
    项目Beta冲刺(团队2/7)
  • 原文地址:https://www.cnblogs.com/chendongblog/p/12895819.html
Copyright © 2011-2022 走看看