再谈快排(超简单代码)Python

news/2024/5/19 22:49:58 标签: 快速排序, 排序算法, 算法, Python

今天看到了快排的另外一种写法,我的天呐,真的好简单,这种快排绝对是我见过最好理解的方法了。
我们知道,快排其实是每次给基准元素找到合适的位置。今天这种方法依然围绕这种核心,但是代码简单了很多。

快排的实现离不开分治法,利用分治的思想进行递归运算,从而实现快排。接下来开始进行介绍:

在进行递归时,我们有两个条件需要找到:
1、结束递归的基线条件
2、进行递归的递归条件

所谓基线条件,其实就是最简单的条件,不可再分的条件,拿排序来说,基线条件就是当数列中没有元素或者只有一个元素时是的情况,在这种情况下,根本不需要进行排序。基于此,我们利用递归的方法,把原数列不停的划分,直到划分后的数列中只有一个或者0个元素。

我们根据基准元素把数据分为三个部分,分别是:
[小于基准元素的数列] + [基准元素] + [大于基准元素的数据]
在小于基准元素的数列中再选择新的基准元素进行划分。对于大于基准元素的数列做同样操作,如此不断的进行递归,直到达到基线条件结束递归,此时整个数组就是有序的。

def quickSort(arr=[]):
    if len(arr)<2:
        return arr
    else:
        pivot=arr[0]
        less=[i for i in arr[1:] if i <= pivot]
        greater=[i for i in arr[1:] if i > pivot]

        return quickSort(less)+[pivot]+quickSort(greater)

if __name__=='__main__':
    array=[3,44,38,5,15,36,46,2,48,19]
    print(quickSort(array))

在这里插入图片描述


http://www.niftyadmin.cn/n/1714570.html

相关文章

程序的机器级表示二(控制)

目录 1.条件码 2.跳转指令 3.条件传送指令 4.switch语句 实现有条件的行为&#xff1a; 测试数据值根据测试的结果来改变测试流/数据流 1.条件码 CF 最高位产生了进位&#xff0c;无符号操作数的溢出 SF 符号标志&#xff0c;操作结果为负数 ZF 零标志 OF 溢出标志 (有符…

说说哈希表/散列表

哈希表和散列表是一个东西&#xff0c;只是叫法不同而已。以下统一称呼为哈希表。 刚刚学习哈希表的时候&#xff0c;我其实对它的了解不是很深入&#xff0c;只知道它是一种key对应value的复杂数据结构。其实&#xff0c;哈希表包括的内容有很多。 哈希表是由哈希函数和数组…

程序的机器级表示三(过程)

目录 过程&#xff1a; 过程的作用&#xff1a; 机器栈&函数调用过程栈的变化&#xff1a; 函数的返回值的保存&#xff1a; 寄存器使用惯例&#xff1a; call,leave,ret 过程&#xff1a; 高级语言中的函数过程的调用包括将数据和控制从代码的一部分传递到另一部分…

程序的机器级表示四(数据)

一、数组 1.一维数组 T A[L];  type T&#xff0c; length L  在内存中连续分配L*sizeof(T) 个字节 访问数组&#xff1a; %edx&#xff1a; 数组的起始地址  %eax&#xff1a; 数组元素下标值  要访问的数据地址为&#xff1a; 4*%eax %edx  内存寻址方式&…

主存储器组织

目录 一、存储器的分类 1.按工作性质/存取方式 2.按存储介质 3.按信息的可更改行 4.按断电后信息的可保存性 5.按功能/容量/速度/所在位置分类 二、主存 1.结构 2.主要性能指标 3.半导体存储器组织 4.内存条组织和总线宽度 5.主存模块的连接与读写操作 一、存储器的…

BFS(广度优先搜索来啦)

一、BFS简介 二、BFS解决问题 三、代码实现 一、BFS简介 BFS即breadth-first search,又称为宽度优先搜索&#xff0c;是最简便的图的搜索算法之一&#xff0c;它是使用队列来实现的。 已知图G(V,E)和一个源顶点s&#xff0c;宽度优先搜索以一种系统的方式探寻G的边&#xff0…

高速缓存概述

目录 1.存储器的层次结构 2.cache概述 3.Cache的映射方式 1.存储器的层次结构 数据总是在相邻两层之间进行复制传送&#xff0c;为什么这种结构有效&#xff1f; 程序的空间局部性和时间局部性。刚访问过的单元不久可能还会被访问&#xff0c;刚刚访问过单元的附近单元可能…

NP问题以及一些相关知识

之前介绍过BFS&#xff0c;BFS可以用来找出所用段数最少的路径。但是&#xff0c;如果路径有权值&#xff0c;想要找出最快路径&#xff0c;据需要用到迪杰斯特拉算法&#xff0c;该算法找出的是总权重最小的路径。 即&#xff1a;如果要计算非加权图的最短路径&#xff0c;可…