美文网首页程序员
python简洁代码实现快速排序

python简洁代码实现快速排序

作者: 火车火车 | 来源:发表于2017-10-28 15:03 被阅读0次

*快速排序 最优时间复杂度为nlogn,因为要完成n个嵌套调用,,但比冒泡排序要快
python实现逻辑过程是这样得。
1.设置两个游标 left跟right
2.设置基准值,网上有方案设置中间数为基准值,但计算比较麻烦,而且并不一定高效,这里设置列表最右的那个元素为基准值,
3.left游标 从左向右移动,当游标指向元素大于基准值时,停下,交换right游标指向的元素
4 同理 right右标向左移动
5 当左右游标相等时停止循环,赋值基准值给左游标指向的元素
6 对基准值左边的元素递归,重复以上步骤,
7 设置条件退出递归。
下面是代码实现

alist= [22,21,34,65,12,89,3,9,66]

def qucik_sort(alist,low, high):
    # 退出递归条件
    # left=right
    while low>high:
        return alist

    left = low
    right = high
    base_value = alist[right]

    while left < right:
        while left<right and alist[left] < base_value:
            left += 1
        # 跳出循环条件
        # alist[left]>=base_value
        alist[right]=alist[left]
        while right>left and alist[right]>base_value:
            right -= 1
        # 跳出循环条件
        # alist[right]<=base_value
        alist[left]=alist[right]
    # 把基准值赋值给游标停留的元素
    alist[right] = base_value
  # 继续对游标左右的队列递归快速排序
    qucik_sort(alist,low,left-1)
    qucik_sort(alist,left+1,len(alist)-1)
    print(alist)

if __name__ == '__main__':

    low = 0
    high = len(alist)-1
    qucik_sort(alist,low,high)

输出结果为 [3, 9, 12, 21, 22, 34, 65, 66, 89]

简洁的代码 ,很pythonic.

相关文章

  • python简洁代码实现快速排序

    *快速排序 最优时间复杂度为nlogn,因为要完成n个嵌套调用,,但比冒泡排序要快python实现逻辑过程是这样得...

  • 快速排序算法的实现( Golang 和 Python )

    Python 中一行代码搞定快排 Python 快速排序 Golang 快速排序

  • 排序算法

    排序 1. 选择排序 代码实现 2. 插入排序 代码实现 3. 冒泡排序 代码实现 4. 快速排序 代码实现

  • 快速排序的Python实现

    目录 快速排序的介绍 快速排序的Python实现 快速排序的介绍 快速排序(quick sort)的采用了分治的策...

  • 归并排序与快速排序python简洁实现

    快速排序和归并排序的原理就不多讲,但网上的实现方法都比较繁琐,这里用更简短优美的python来实现上述算法.

  • 2019-08-11插入排序

    C语言实现的插入排序算法两种实现方式代码繁多(逻辑简单) 代码简洁(逻辑复杂) 上面两种代码。代码简洁一般逻辑复杂...

  • 15.排序算法(6)

    1.快速排序介绍 2. 代码实现

  • 基础算法之快速排序

    最近在学习算法,先放上快速排序的python代码,等有时间了再来详细说明。 快速排序

  • 7天练|Day3:排序和二分查找

    关于排序和二分查找的几个必知必会的代码实现排序实现归并排序、快速排序、插入排序、冒泡排序、选择排序编程实现O(n)...

  • 排序

    排序 快速排序 归并排序 计数排序 Python实现 理解 详解 稳定:如果a原本在b前面,而a=b,排序之后a仍...

网友评论

    本文标题:python简洁代码实现快速排序

    本文链接:https://www.haomeiwen.com/subject/pcpjpxtx.html