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}))
}
                    
                
                
            
        
浙公网安备 33010602011771号