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}))
}
posted @ 2020-05-15 16:43  布里塔  阅读(198)  评论(0编辑  收藏  举报