python五大基本算法之快速排序

Python趣味算法:冒泡排序——从理论到极致优化 本文深入解析冒泡排序算法,从基础实现到7种优化技巧。通过可视化演示和性能分析,详细介绍了标准冒泡、提前终止、跳跃式优化和双向冒泡等优化方法,并进行万级数据实测对比。文章还探讨了冒泡排序的适用场景,与选择排序的对比,以及在工程实践中的常见陷阱和防御措施。最后从算法进化角度,展现了从冒泡排序到快速排序的性能跃迁过程,为读者提供了完整的算法学习和优化路径。 阅读详情

快速排序的思想:首先选取一个基准数(一般为第一个数),然后将比它小得数放到左边,比它大的数放到右边,这一个过程称为一趟快速排序。
一趟快速排序的算法是:
1)设置两个变量x、y,排序开始的时候:x=0,y=N-1;
2)以第一个数组元素作为关键数据,赋值给base,即base=A[0];
3)从y开始向前搜索,即由后开始向前搜索(y–),找到第一个小于base的值A[y],将A[y]和A[x]互换;
4)从x开始向后搜索,即由前开始向后搜索(x++),找到第一个大于base的A[x],将A[x]和A[y]互换;
5)重复第3、4步,直到x=y; (3,4步中,没找到符合条件的值,即3中A[y]不小于base,4中A[x]不大于base的时候改变y、x的值,使得y=y-1,x=x+1,直至找到为止。找到符合条件的值,进行交换的时候x, j指针位置不变。另外,x==j这一过程一定正好是x+或y-完成的时候,此时令循环结束)。
快速排序分析:

在这里插入图片描述在这里插入图片描述
代码块:

#快速排序
def func(my_list,start,end):

    #建立终止条件
    if start >= end:
        return

    #x为左边向右移动的游标
    #y为右边向右移动的游标
    x,y = start,end

    #建立基准元素
    base = my_list[start]

    while x < y:

        #当x<y,并且对应的元素都大于基准元素,游标向左移动
        while x < y and my_list[y] >= base:
            y = y - 1

        #如果小于基准元素,则将值赋给x游标对应的元素
        my_list[x] = my_list[y]

        #当x<y,并且对应的元素都小于基准元素,游标向右移动
        while x < y and my_list[x] <= base:
            x = x + 1

        #如果大于基准元素,则将值赋给y游标对应的元素
        my_list[y] = my_list[x]

    #当循环结束之后,x=y,则将基准元素赋值给x游标对应的元素
    my_list[x] = base

    #此时序列被分成了前后两部分,利用递归调用继续排序
    #前半部分序列进行递归
    func(my_list,start,y-1)

    #后半部分序列进行递归
    func(my_list,y+1,end)
    return my_list

if __name__ == '__main__':
    my_list = [45, 62, 23, 12, 54, 78, 96, 31]
    func(my_list, 0, len(my_list) - 1)
    print(my_list)

运行之后的结果为:

[12, 23, 31, 45, 54, 62, 78, 96]
从‘汉诺塔’到‘快速排序’:用Python图解递归在经典算法中的核心思想 本文通过Python代码和可视化思维,深入解析递归在经典算法中的核心思想与应用。从汉诺塔、斐波那契数列到归并排序、快速排序和二叉树遍历,详细展示了递归的自相似性和分治策略,帮助读者理解递归的运作机制及其在算法设计中的重要性。 阅读详情

相关推荐

面试刷题必看!Python中的5大排序算法及其实现代码

排序是每个 IT 工程师和开发人员必备的知识技能。不仅要通过编程面试,而且要了解算法本身。不同的排序算法完美地展示了算法设计如何对程序的复杂性、速度和效率产生如此大的影响。 让我们来看看排名前5,也是最常见,面试中经常被问到的排序算法,看看如何用Python实现它们! 1.冒泡排序 冒泡排序是 CS 入门课程中最常讲授的一种,因为它清楚地说明了排序的工作原理,同时又简单又易于理解。 冒泡排序将逐步遍历列表并比较相邻的元素对。如果元素的顺序错误,则会交换这些元素。重复对列表中未排序部分的遍历,.

weixin_45820912的博客 478

python算法之快速排序

快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 步骤为: 从数列中挑出一个元素,称为"基准"(pivot), 重新排序...

weixin_33841722的博客 153

Python中的分治算法与递归优化策略【python基础篇】

分治算法是一种强大的算法设计范式,通过将问题分解为子问题并合并解,能够高效解决许多复杂问题。Python作为一种高级编程语言,提供了良好的递归支持,使得分治算法的实现更加简洁直观。 在实际应用中,需要根据问题特点选择合适的分治策略,并结合优化技术提高算法性能。同时,要注意递归深度、缓存使用、合并操作等细节,以确保算法的正确性和效率。

博客 861

最常用的排序——快速排序

假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。        假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个10个数进行排序。首先在这个序列中随便找一

persist 778

DSP28335学习笔记——McBSP配置为SPI

由于28335硬件外设上只有一个SPI接口,所以当SPI接口不够用时,可以将McBSP配置为SPI接口。 参考28335的数据手册,当DSP为主机时,配置McBSP为SPI所用到的接线如下图所示。 另外总结一些调试过程中的经验。 1.传输数据位数的确定 由RCR1寄存器中的RWDLEN1和XCR1寄存器中的XWDLEN1决定。分别对应着接受和发送的位数,在配置成SPI模式的时候,这

捕虫少年 1万+

机器学习 -- 信用卡评分模型 -- 互联网金融风控

互联网金融主要分为资金类和资产类。资金类主要是理财产品,吸储,主要指标是用户转化、留存和复投,重在客户运营。资产类主要是贷款,包括消费金融和现金贷,小额贷款属于此类,主要目的是用户转化,还款和风险控制,信用卡评分模型就属于风险控制。 信用评分作用是对贷款申请人(信用卡申请人)做风险评估分值的方法。 信用卡评分是以大量数据的统计结果为基础,根据客户提供的资料和历史数据对客户的信用进行评估,评分卡模型...

XiaoMaEr66的博客 2422

Python3实现快速排序

Python3实现快速排序原理思路代码实现通用版本实战中的版本Pythonic版本小结项目地址 原理思路 快速排序也是分而治之思想的典范,通过递归解决问题。思路:1. 找到简单的基线条件(递归出口);2. 确定如何缩小问题的规模,使其符合基线条件。 详细的原理可以参考 这篇文章坐在马桶上看算法:快速排序 步骤归纳: 排序数组为collection,游标left从a的最左边开始,游标right从最...

Jock2018的博客 1864

服务器卡死排查实战:从现象分类到根因定位的完整手册

服务器卡死是运维中最令人头疼的故障之一,从游戏圈吐槽的“土豆服务器”到生产环境中的Linux系统无响应、rsync复制挂起,本质都是系统或进程失去正常响应能力。其原理通常涉及CPU、内存、磁盘IO或网络资源耗尽,以及内核和驱动异常。掌握系统化的排查方法,能够帮助工程师快速定位根因、缩短故障时间,避免盲目重启。本文从资源、层级、场景等多维度分类,结合top、dmesg、strace等工具,梳理一套从现象确认、指标收集、日志分析到进程定位的实战排查流程,并覆盖常见高频场景与预防治理建议。无论你是运维新手还是老手

weixin_33851177的博客 378

python实现五大基本算法_Python五种常见的算法,你都了解么

本人对于Python学习创建了一个小小的学习圈子,为各位提供了一个平台,大家一起来讨论学习Python。欢迎各位到来Python学习群:960410445一起讨论视频分享学习。Python是未来的发展方向,正在挑战我们的分析能力及对世界的认知方式,因此,我们与时俱进,迎接变化,并不断的成长,掌握Python核心技术,才是掌握真正的价值所在。1、选择排序选择排序是一种简单直观的排序算法。它的原理是这...

weixin_39750854的博客 419

基于相场法模拟金属铜的晶粒的长大过程附matlab完整代码

晶粒生长是一种重要的材料形态演化过程,对于材料的性能和制备有着非常重要的影响。相场法是一种将材料结构和热力学性质联系起来的方法,它能够有效地模拟晶粒的长大过程并预测材料的结构和性能。本文所采用的相场模型是基于Cahn-Hilliard方程和Allen-Cahn方程的二次相场模型。其中,Cahn-Hilliard方程描述了晶界的自由能密度,而Allen-Cahn方程则描述了晶粒的彼此之间的界面能密度。本篇文章将介绍如何使用相场法模拟金属铜的晶粒的长大过程,并提供完整的MATLAB代码供读者参考。

m0_47037246的博客 1383

到底什么是指令集?什么是微架构?他们是什么关系?

指令集、处理器架构、芯片厂商、ARM、x86,其间关系还在迷糊吗?一文迅速理清!!

车载系统攻城狮 7814

python3实现快速排序算法图文详解

快速排序做为一种比较经典的排序思路,经常在面试中被提及。这一节就分解下快排的思路,最后用代码实现一下。 文章目录快速排序代码实现单次排序递归时间复杂度稳定性完整代码 快速排序 假设有下面一个数组需要排序 [38,67,11,26,20,99,45,54] 思路就是从第一个元素38开始,找到一个中间位置,将比38小的元素都放在左边,比38大的元素都放在右边。然后再分别对左右两边的子序列进行同样的操作,最后达到整体有序。 为了达到这个目的,我们只要弄清楚了单次排序的实现方法,后面的子序列只需要采用递归的方式就

T型人小付的博客 1252

GFPS技术原理(一)-简介

GFPS(谷歌快速配对服务)利用BLE技术简化设备配对流程,相比传统方式大幅提升用户体验。首次配对时,设备广播包含型号ID和安全密钥的BLE信号,手机检测后弹出配对通知,用户点击即可完成安全连接并将设备与Google账户绑定。该技术支持跨设备同步、电量显示、找回设备等功能,后续配对更加便捷。GFPS通过BLE实现快速发现、一键配对和安全连接,结合Google后端服务提供元数据支持,已成为出海设备的认证标准。其核心优势在于简化操作步骤并增强功能性,特别适合非技术用户群体。

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2062

python算法_算法基础:五大排序算法Python实战教程

本文为 AI 研习社编译的技术博客,原标题 :A tour of the top 5 sorting algorithms with Python code作者 | George Seif翻译 | 邓普斯杰弗校对 | shunshun 整理 | 菠萝妹原文链接:https://medium.com/@george.seif94/a-tour-of-the-top-5-sorting-...

weixin_39940253的博客 99

基于改进YOLO11的天际线检测算法:复杂光照与恶劣天气适配实战

针对特定任务的YOLO改进,不应追求通用SOTA,而应深入理解任务的物理退化机理。Retinex对应光照模型、FAD对应散射模型、Wise-IoU对应边界不确定性——每个改进都有明确的物理解释,而非盲目的模块堆叠。时序一致性:引入轻量级RNN/Transformer模块利用视频帧间信息补偿单帧退化;多模态融合:结合红外/NIR波段穿透雾霾,与可见光特征在FAD-Neck中交叉注意力融合;自监督预训练:在海量无标注天际线视频上用MAE预训练Backbone,缓解恶劣天气标注稀缺问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 97

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python数据结构和算法(一):基于内存的五大排序算法!

文章目录前文冒泡排序插入排序选择排序快速排序 前文   学习数据结构和算法很久了,坚持刷题了半年多,自己也一直想总结关于Python数据结构和算法,于是,就从这篇开始吧!《数据结构和算法》作为程序员的必修课,一直是大家不断努力的方向,不过网上针对该门课的大牛大多数都是java、c++之类的,很少有用到Python来介绍的,所以我就出一系列依据Python来介绍的博客,希望大家都能有所收获!   我...

weixin_42681866的博客 705

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python快速排序找第k大值_Python实现查找数组中任意第k大的数字算法示例

本文实例讲述了Python实现查找数组中任意第k大的数字算法。分享给大家供大家参考,具体如下:模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。def partitionOfK(numbers, start, end, k):if k < 0 or numbers == [] or ...

weixin_39604983的博客 423

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【爆火算法文】大厂必考的5大算法+四语言代码全解(Java/C/C++/Python)

算法能力是程序员职业发展的关键因素,决定了处理复杂问题的上限。腾讯T11专家指出,算法能力如同编程的内功,是理解机器学习、神经网络等AI技术的基础。2023年大厂面试报告显示,算法题的出现率高达87%,凸显了其在技术面试中的重要性。文章详细介绍了五大核心算法:快速排序、二分查找、链表环检测、二叉树路径和以及

TGQlovemm的博客 675

python 大数字算法,Python实现查找数组中任意第k大的数字算法示例

本文实例讲述了Python实现查找数组中任意第k大的数字算法。分享给大家供大家参考,具体如下:模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。def partitionOfK(numbers, start, end, k):if k < 0 or numbers == [] or ...

weixin_30666751的博客 328

python 大数字算法,[宜配屋]听图阁

本文实例讲述了Python实现查找数组中任意第k大的数字算法。分享给大家供大家参考,具体如下:模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。def partitionOfK(numbers, start, end, k):if k < 0 or numbers == [] or ...

weixin_32722049的博客 100

五大经典排序算法实战指南:从原理到工业级选型

排序算法是计算机科学的基础概念,其核心在于在时间、空间与稳定性之间做工程权衡。理解冒泡排序的提前终止机制、插入排序的局部性优势、快速排序的分区策略、归并排序的稳定性保障以及堆排序的空间约束适应性,是构建高性能系统的前提。这些算法并非仅存在于教科书,而是深度嵌入实时交易匹配、传感器数据流处理、日志分析与高并发库存扣减等真实场景。尤其在数据分布偏斜、内存受限或业务强依赖顺序一致性(如金融对账)时,算法选择直接决定系统可用性与可靠性。本文聚焦Python实操,覆盖性能压测、退化防护与生产决策树。

weixin_30357231的博客 324

终极指南:Hello Algorithm搜索与排序算法完全解析

《Hello 算法》是一部动画图解、一键运行的数据结构与算法教程,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Rust, Dart, Zig 等多语言实现,为新手和普通用户提供了直观易懂的算法学习体验。 ## 搜索算法:从线性到二分的效率飞跃 🚀 搜索是计算机科学中最基础也最重要的操作之一。想象在一个巨大的图书馆中寻找特定书籍,不同的搜索策略会带

gitblog_00403的博客 822

数组中任意第k大的数字

模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。 def partitionOfK(numbers, start, end, k): if k &lt; 0 or numbers == [] or start &lt; 0 or end &gt;= len(numbers) or...

fanc的博客 735

Qwen3-0.6B-FP8真实案例:Python快速排序代码生成质量实测

本文介绍了如何在星图GPU平台上一键自动化部署Qwen3-0.6B-FP8(内置模型版)v1.0镜像,并实测了该轻量级模型在代码生成任务上的表现。文章通过生成Python快速排序算法代码这一典型应用场景,展示了该模型在辅助编程、算法教学及快速原型开发中的实用价值。

weixin_35754676的博客 262

蓝桥杯Python组备赛全攻略:从零基础到省奖,我的刷题笔记与工具清单

本文分享了从零基础到蓝桥杯Python组省奖的备赛全攻略,包括高效学习资源、针对性刷题策略、必备算法模板和赛场实用工具。通过实战经验和独家心法,帮助参赛者快速提升编程能力,掌握关键技巧,实现稳定发挥。

weixin_30908941的博客 390
上一篇: 如何应用装饰器(上)
下一篇: 使用selenium爬取淘宝网页商品
pyswt
博客等级 码龄8年 45粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值