• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言实现快速排序+python

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

快速排序是经典, 快速, 简洁的排序算法, 平均时间复杂度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}))
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go-接口(作用类似python类中的多态)发布时间:2022-07-10
下一篇:
js,python,go 协程对比发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap