我是靠谱客的博主 丰富小懒虫,最近开发中收集的这篇文章主要介绍Python 实现快速排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 实现快速排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部