python实现快速排序

快速排序在于快,大概思想是:先使用一个数值作为中间值,通过第一次排序将数组分为两部分,左边的都比这个数值小, 右边的都比这个数值大,再利用递归将这两部分数组进行同样的排序:

 1 def quick_sort(li, start, end):
 2     # 递归结束条件:
 3     if start >= end:
 4         return
 5     # 左边第一个索引
 6     left = start
 7     # 右边最后一个索引
 8     right = end
 9     # 把第一个数作为中间值
10     mid = li[left]
11     # 首先右边的索引往左移动,当left<right 的时候和right的值大于mid值时才执行循环
12     while left < right:
13         while left < right and li[right] >= mid:
14             right -= 1
15         li[left] = li[right]
16         while left < right and li[left] <= mid:
17             left += 1
18         li[right] = li[left]
19     li[left] = mid
20     # 此时,mid左边的数都小于mid, mid右边的数都大于mid
21     # 将两边的数再通过递归的方式进行排序
22     quick_sort(li, start, left - 1)
23     quick_sort(li, left + 1, end)
24 
25 
26 if __name__ == '__main__':
27     li = [4, 3, 5, 7, 9, 2, 1, 6, 8]
28     quick_sort(li, 0, len(li) - 1)
29     print(li)

萧伯纳说:“你有一个苹果,我有一个苹果,彼此交换一下,我们彼此仍然是各有一个苹果;但是你有一种思,我有一种思想,彼此交换一下,才发现从不同角度看到的问题远比本身更深刻,所以多交流多沟通是我们提高自我能力的一种方式!!!

如果你有更好更简单的方法,请一定评论谢谢!!!

 

posted @ 2017-12-25 21:06  爱吃鱼的豆腐  阅读(314)  评论(0编辑  收藏  举报