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}))
}