首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python之快速排序

算法描述

快速排序是将元素按照其中一个记录分成大于该记录和小于该记录的部分,然后再对两个部分进行排序。快速排序也是分治法的经典应用。

快速排序是最常使用也是最经典得排序算法,排序平均时间复杂度是O(nlogn),最坏情况是O(n^2)。

代码1:(quicksort.py)

def splitlist(lst): pi, lst = lst[0], lst[1:] gt = [v for v in lst if v > pi ] lt = [v for v in lst if v >> lst = [4, 2, 3, 1, 6, 7] >>> splitlist(lst) ([2, 3, 1], [4], [6, 7]) """ lst = [4, 2, 3, 1, 6, 7] lt, pi, gt = splitlist(lst) if lt == [2, 3, 1] and pi == [4] and gt == [6, 7]: print("test splitlist OK!") else: print("test splitlist Failed!")def test_quicksort(): # lst = [ 9, 4, 3, 10, 7, 13, 2] lst = [9, 4, 3, 10, 7, 13, 2] lst_copy = lst[:] sorted_list = quicksort(lst) if sorted_list == sorted(lst_copy): print("test quicksort OK!") else: print("test quicksort failed")if __name__ == "__main__": test_splitlist() test_quicksort()

在上面得代码中,我们使用了递归调用和额外空间,这样虽然会导致更多得额外空间被使用,但是代码更加易读,符合python的编码哲学。

后面两个test开头的函数属于测试用例。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322G1K9KG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券