Python之快速排序

news/2024/11/25 18:52:23/

算法思路:        

        我们首先判断数组是否只有一个元素或没有元素,如果是则直接返回原数组。否则,我们选择一个基准值(这里我们选择数组的第一个元素),并将数组分为两个部分:小于基准值和大于基准值的部分

        接下来,我们将递归地对这两个部分进行快速排序,并将它们与基准值连接在一起,形成新的有序数组。

        这里采用了Python的列表推导式来生成两个部分,使代码更加简洁明了。此外,这个算法的最坏时间复杂度O(n^2),而平均时间复杂度O(nlogn)

代码实现:

def quick_sort(arr):# 如果数组只有一个元素或者没有元素,直接返回该数组if len(arr) <= 1:return arrelse:# 选择第一个元素作为基准值pivot = arr[0]# 小于等于基准值的部分less_than_pivot = [x for x in arr[1:] if x <= pivot]# 大于基准值的部分greater_than_pivot = [x for x in arr[1:] if x > pivot]# 对小于等于基准值的部分进行递归排序sorted_less_than_pivot = quick_sort(less_than_pivot)# 对大于基准值的部分进行递归排序sorted_greater_than_pivot = quick_sort(greater_than_pivot)# 将排好序的小于等于基准值的部分、基准值和排好序的大于基准值的部分连接起来return sorted_less_than_pivot + [pivot] + sorted_greater_than_pivotarr = [6, 8, 3, 2, 9, 1, 4, 7, 5]
sorted_arr = quick_sort(arr)
print(sorted_arr)

输出结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9] 

        这个算法的核心就是将数组分为小于基准值和大于基准值的两个部分,并递归地对它们进行快速排序。 


http://www.ppmy.cn/news/370645.html

相关文章

[srpingboot]菜鸟学习-ReSTful

REST即表述性状态转移&#xff08;英文&#xff1a;Representational State Transfer&#xff0c;简称REST&#xff09;&#xff0c;是一种针对网络应用的设计和开发方式&#xff0c;可以降低开发的复杂性&#xff0c;提高系统的可伸缩性。它主要描述了资源的表述以及资源之间的…

htc e9刷android6,HTC One E9+(E9pw 联通4G)刷机图文详解教程

玩安卓手机最大的乐趣当然就是刷机了&#xff0c;为了让HTC One E9(E9pw 联通4G)手机变的更快&#xff0c;我们通常都会通过刷机来提高HTC One E9(E9pw 联通4G)手机的运行速度&#xff0c;下面跟大家分享怎么用奇兔刷机对HTC One E9(E9pw 联通4G)进行一键刷机&#xff0c;具体步…

htc x920e刷android7.0,HTC X920e (Butterfly)一键刷机图文教程

经常会有机友提问&#xff0c;我的HTC X920e (Butterfly)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机&#xff0c;所以有时候小编也无法及时回答上来&#xff0c;最简单的办法就是把手机连上奇兔刷机&#xff0c;即可看到手机是否支持一键刷机。一键…

linux提取手机rom,xp系统下面(android)安卓手机刷机ROM教程

第 2 页 从官方RUU刷机程序中提取 从官方RUU刷机程序中提取官方原版ROM&#xff1a; 第一步&#xff1a;下载官方RUU刷机程序(EXE文件) 第二步&#xff1a;运行您已经下载的RUU刷机程序 (例如&#xff1a;RUU_Legend_hTC_Asia_TW_1.31.709.2_Radio_47.26.35.04_7.05.35.26L_rel…

android手机各大分区详解

1. bootloader 当我们拿到一款手机&#xff0c;第一件事应该就是按下电源键开机&#xff0c;那么从开机到进入到桌面程序这中间发生了些什么呢&#xff0c;我们从下面这张简化了的手机结构图开始&#xff1a; 注意&#xff1a;该结构图并不反映手机的实际分区顺序和位置&#x…

Ubuntu下eclipse无法识别手机驱动

google官方开发向导里对Android手机已经设置了允许安装非market程序&#xff0c;并且处于usb调试模式&#xff0c;但是仍然在usb连接电脑后无法被识别的问题作了解释。 官方网址&#xff1a;http://developer.android.com/guide/developing/device.html 如果是windows平台下&am…

htc A315 android usb驱动安装

根据一本书上的说明进行安装&#xff0c;类似这个文档上的 http://ajava.org/readbook/J2ME/androidsdkdq/17365.html&#xff0c;安装时报&#xff1a; 指定的位置不包含有关硬件的信息 和 无法安装这个硬件 错误 查了很多文档&#xff0c;这个问题很多人碰到&#xff0c;我…

htc+android+4.4.4,htc one升级android 4.4教程:htc one升级安卓4.4步骤详解

----HTC One 801e升级安卓4.4注意事项 1、本教程适用于HTC 801e M7单卡版刷入4.4 官方RUU&#xff0c;也适用于其他zip格式的RUU刷入&#xff0c;不过请自行修改部分下载内容。 2、刷机前请保证你的手机已经S-OFF了&#xff0c;电量高于30%&#xff0c;同时你所操作的电脑系统是…