概述
def quick_sort(arr,low,high):
''' 指针交换法实现快速排序
:param arr: 所排序的数组
:param low: 左起第一位数的位置
:param high: 左起最后一位数的位置
'''
if low >= high:
return
pivot = arr[low] # 基准数,这里选择左起第一位数
j = high # 哨兵j,从右往左找小于基准数的数
i = low #哨兵i,从左往右找大于基准数的数
while i != j: #当哨兵i 和哨兵j 木有相遇
while arr[j] >= pivot and i < j:
#因为选取最左边为基准点,所以哨兵j 先动,
#否则可能会出现和基准点交换值不准确的情况
j -= 1
while arr[i] <= pivot and i < j:
i += 1
if i < j:
arr[i], arr[j] = arr[j], arr[i]
if i == j: #当哨兵i 和哨兵j 相遇,和基准点交换值
arr[low],arr[j] = arr[j],arr[low]
quick_sort(arr,low,j-1)
quick_sort(arr,i+1,high)
arr=[6,1,2,7,9,3,4,5,10,8]
quick_sort(arr,0,9)
print(arr)
快速排序
快速排序使用分而治之的思想。每一轮确定一个数(基准点)的排序位置,与此同时,将比基准点小的数移到基准点左边,比基准点大的数移到右边。
平均时间复杂度为 O(NlogN)。每轮遍历N次,共 logN 轮。
最坏时间复杂度为 O(N^2)
参考链接
1.《啊哈!算法》第一章
最后
以上就是丰富小懒虫为你收集整理的Python 实现快速排序的全部内容,希望文章能够帮你解决Python 实现快速排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复