用Python 3实现快速排序和插入排序代码详解 !

Python实现快速排序和插入排序算法及自定义排序的示例 这篇文章主要介绍了Python实现快速排序和插入排序算法及自定义排序的示例,自定义排序用到了Python的sort和sorted函数,需要的朋友可以参考下 一、快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法... 阅读详情

今天用Python 3版本实现快速排序和插入排序。先对Python语言做个简单介绍。

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python 源代码同样遵循 GPL(GNU General Public License)协议。

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

快速排序使用分治法策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。

步骤为:

  • 挑选基准值:从数列中挑出一个元素,称为"基准"(pivot);
  • 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的排序就已经完成;
  • 递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。

递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。选取基准值有数种具体方法,此选取方法对排序的时间性能有决定性影响。

以下为git动图解析:

Python资源共享群:626017123

 

 

 

 

 

实例代码:

  •  
def partition(arr,low,high):     i = ( low-1 )         # 最小元素索引    pivot = arr[high]           for j in range(low , high):           # 当前元素小于或等于 pivot         if   arr[j] <= pivot:                       i = i+1             arr[i],arr[j] = arr[j],arr[i]       arr[i+1],arr[high] = arr[high],arr[i+1]     return ( i+1 )    # arr[] --> 排序数组# low  --> 起始索引# high  --> 结束索引  # 快速排序函数def quickSort(arr,low,high):     if low < high:           pi = partition(arr,low,high)           quickSort(arr, low, pi-1)         quickSort(arr, pi+1, high)   arr = [10, 7, 8, 9, 1, 5] n = len(arr) quickSort(arr,0,n-1) print ("排序后的数组:") for i in range(n):     print ("%d" %arr[i]),

执行以上代码输出结果为:

  •  
排序后的数组:1578910

 

插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

实例代码:

  •  
def insertionSort(arr):       for i in range(1, len(arr)):           key = arr[i]           j = i-1        while j >=0 and key < arr[j] :                 arr[j+1] = arr[j]                 j -= 1        arr[j+1] = key     arr = [12, 11, 13, 5, 6] insertionSort(arr) print ("排序后的数组:") for i in range(len(arr)):     print ("%d" %arr[i])

执行代码输出结果:

  •  
排序后的数组:56111213

以上就是用Python 3实现快速排序和插入排序的代码详解,不仅的对于Python编程语言,大部分编程语言的基础语法和数据结构,算法排序的学习都很枯燥,也相当不好理解,但是这些又对我们编程的学习至关重要,是必须打好的基础功底,对以后的深入Python项目实战学习很重要。在我们Python和人工智能社区,一起更好的学习Python编程,拥抱人工智能!

java版插入排序~ 插入排序(InsertionSort),一般也被称为直接插入排序。 对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。 适用范围: 插入排序的平均时间复杂度也是 O(n^2),空间复杂度为常数阶 O(1)... 阅读详情

相关推荐

【算法】排序算法介绍 附带C#和Python实现代码

排序算法是计算机科学中的一个基础而重要的部分,用于将一组数据按照一定的顺序排列。下面介绍几种常见的排序算法,并分别用C#和Python给出实现代码。

Xiaoxin的博客 1613

Python如何进行插入排序?

工作原理:插入排序算法将输入列表视为已排序的子列表和未排序的子列表,每次从未排序的子列表中取出一个元素,将其插入到已排序的子列表的正确位置中。该算法将输入列表视为已排序的子列表和未排序的子列表,每次从未排序的子列表中取出一个元素,将其插入到已排序的子列表的正确位置中。如果 key 小于 arr[j],则将 arr[j] 向右移动一位,即 arr[j + 1] = arr[j],然后将 j 减 1。5.将 key 插入到已排序的子列表的正确位置中,即 arr[j + 1] = key。

zy1992As的博客 1967

Python中使用插入排序算法的简单分析与代码示例

主要介绍了Python使用插入排序算法的简单分析与代码示例,插入算法的平均时间复杂度为O(n^2),需要的朋友可以参考下

python实现插入排序

1、插入排序原理     百度上的话,学术性太强,不容易看懂,我用自己的话复述一下插入排序原理。     插入排序的核心在于,它把一个无序数列看成两个数列,假如第一个元素构成了第一个数列,那么余下的元素构成了第二个数列,很显然,第一个数列是有序的(因为只有一个元素嘛,肯定有序哦),那么我们把第二个数列的第一个元素拿出来插入到第一个数列,使它依然构成一个有序数列,直到第二个数列中的所有元素全部插入到...

su_bao的博客 7243

Dify视觉模型节点避坑指南:我用Qwen2.5-VL做OCR识别时踩过的3个坑(及解决方案)

本文分享了使用Dify平台和Qwen2.5-VL视觉模型进行OCR票据识别时遇到的三个常见问题及解决方案,包括文件变量传递、结构化输出和条件分支判断失效。通过实战经验,帮助开发者优化多模态模型在财务自动化中的应用,提升OCR识别精度和效率。

weixin_29284885的博客 406

使用-flat.vmdk文件恢复ESXI虚拟机的vmdk文件

解决flat.vmdk文件丢失恢复问题

神秘人的博客 6774

08_数据结构与算法_插入排序_Python实现

""" 插入排序: 其思想类似于手中有一些乱序的扑克牌,要将其整理为有序的。 首先拿第二张,与之前一张对比,小于第一张时交换顺序,大于时保持不动。 这样i轮过后,第i大的牌就会出现在第i个位置。 """ import random def insertion_sort(L): #从下标1开始遍历 for j in range(1,len(L)): ...

一蓑烟雨任平生 255

LVDS高速ADC接口, xilinx fpga实现

FPGA实现lvds高速ADC数据接口,窗口对齐算法,Verilog源码

kuangxin的博客 6万+

python 快速排序_用Python 3实现快速排序和插入排序代码详解

今天用Python 3版本实现快速排序和插入排序。先对Python语言做个简单介绍。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python 源代码同样遵循 GPL(GNU General Public License)协议。Python的3.0版本,常被称为Pyt...

weixin_39625172的博客 212

S32K3 MCAL配置 【MCU、PORT、DIO】

1、s32k3时钟源可由PLL, FXOSC, FIRC, SIRC, and SXOSC五种时钟源生成,可按照手册推荐配置。目标是在在S32K344板子上点亮红色LED灯,需要配置的有MCU、PORT、DIO模块。MCU最主要的是时钟配置,要翻看芯片手册,理解时钟树。1、通用配置中,没有什么特殊需求按照demo配置就好。1、配置MC_CGM mux 0 clocks时钟。1、外部晶振配置按照实际项目原理图进行配置。1、外部晶振配置,按照实际项目配置。1、PLL时钟按照手册进行配置。

weixin_43741076的博客 3247

评估篇| 大模型评测综述

1、基于人类的评测。与针对基础大语言模型的自动化评测不同,微调大语言模型的评测更加注重模型在实际应用场景中的表现,如与人类交互的自然度、对齐度等。2、基于模型的评测。例如,AlpacaEval 排行榜 基于由大语言模型合成的人类需求指令作为评测任务,然后收集待评估大模型的回应,并采用 GPT-4 等大语言模型作为评测员,将待评估大语言模型的输出与参考输出进行成对比较。1、大语言模型对评估设置极为敏感,包括问题的表述方式、提示样本的选择以及答案的解析策略等,这些细微的差别都可能导致评估结果的显著变化。

youbingchen的博客 637

python实现冒泡排序、插入排序以及快速排序算法

最近参加实习面试,面试官提到了有关排序算法的问题,现将冒泡排序、插入排序和快速排序算法的思想及python3实现的代码,具体如下: # -*- coding: utf-8 -*- """ Created on Thu Dec 19 11:10:42 2019 @author: Boge """ arr_1= [6,3,9,15,4,2] arr_2 = [7,1,4,8,26,43,2,3] ...

华理小波哥 775

泛微OA自定义post接口和路径(无侵入)

泛微OA自定义post接口和路径(无侵入)

技术分享 3871

汇编程序实现快速排序_用Python 3实现快速排序和插入排序代码详解

今天用Python 3版本实现快速排序和插入排序。先对Python语言做个简单介绍。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python 源代码同样遵循 GPL(GNU General Public License)协议。Python的3.0版本,常被称为Pyt...

weixin_26812607的博客 173

由ip地址和子网掩码求网络号、主机号、广播地址(超详细)

1、用二进制数表示IP地址   在进行计算之前,我们首先要学会十进制的IP地址怎么转换为二进制的IP地址。   给出一个例子: 十进制:172.16.25.3 二进制:10101100.00010000.00011001.00000011 1、如果两台主机的网络号相同,我们就说它们是同一网段 2、主机号的意义 - 1)主机号部分全变成1,即为该网段的广播地址 - 2)主机号部分全变成0,即为该网段的网路地址(网络号) 3、如果主机号部分为x位,则该网络能容纳最大主机数为: 2的x次方-2。减2

爱吃雪糕的小布丁的博客 9万+

Fiori Elements 表格之 Tree Tables:从数据建模到交互行为的全链路剖析

SAP Fiori elements的Tree Table组件将分层数据以表格形式展示,支持展开/折叠操作,适用于组织结构、物料清单等多级数据场景。该组件在List Report和Object Page中均可使用,支持懒加载、多选、列冻结等标准表格功能,并与OData V4服务层级注解深度集成。后端需通过RAP或CAP建模提供层级数据,前端通过清单配置切换表类型。需注意在草稿模式下仅显示活动实体,且展开状态在编辑时不保留。性能方面建议采用懒加载策略,避免全量加载树节点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 160

Python一行代码实现快速排序

上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、希尔、归并),因为快速排序的重要性,所以今天将单独为大家介绍快速排序! ...

猪哥 4769

STM32F407中文手册

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

python实现插入排序、快速排序

快速排序是一种分治算法,通常被认为是目前最快的排序算法之一。它的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个过程可以递归进行,以达到整个数据变成有序序列。通过以上实现,可以看到这两种排序算法在不同场景下的适用性。插入排序算法简单直观,适用于小规模数据;快速排序则效率高,适用于大规模数据。它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

闲人编程的博客 912

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python快速排序代码_python代码实现_冒泡排序,选择排序,插入排序,快速排序

Python排序算法_冒泡排序,选择排序,插入排序,快速排序的python实现1.冒泡排序每轮循环中依次比较相邻两个数的大小,交换元素顺序使得大的值往后移动,时间复杂度O(n2)#冒泡排序def BubbleSort(array):for i in range(len(array)-1):for j in range(len(array)-i-1):if array[j]>array[j+1]:a...

weixin_39664560的博客 133

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

快速排序:Python语言实现

快速排序是一种常用的排序算法,比选择排序快得多。例如,C语言标准库中的函数qsort 实现的就是快速排序。像归并排序(merge sort)一样,快速排序也是一种分治的递归算法。

Saki_Python的博客 1329

Python 中实现插入排序

本文详细介绍了插入排序的原理、实现方法以及应用场景,并提供了Python示例代码。插入排序是一种简单而有效的排序算法,适用于小规模数据排序、部分有序数据和在线排序等情况。希望通过本文的介绍,大家能够更好地理解插入排序算法,并能够灵活运用于实际问题中。

涛哥聊Python 1380

python实现的冒泡、快速排序

ai是满足最大值在最右边的序列,求a1 a2…ai ai+1满足最大值在最右边的序列,若ai

weixin_40756114的博客 1828

python快速排序最简单写法_Python一行代码实现快速排序

上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、希尔、归并),因为快速排序的重要性,所以今天将单独为大家介绍一下快速排序!一、算法介绍排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解和掌握各种排序算法。其中"快速排序"(Quicksort)使用得最广泛,速度也较快。...

weixin_39611049的博客 1178

python数组快速排序算法_Python一行代码实现快速排序

原标题:Python一行代码实现快速排序来源:裸睡的猪ID:IT--Pig作者:猪哥上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、希尔、归并),因为快速排序的重要性,所以今天将单独为大家介绍一下快速排序!一、算法介绍排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解...

weixin_39899691的博客 367

python版 常用排序算法 思路加详解 冒泡排序、快速排序、插入排序、选择排序

python版 常用排序算法 思路加详解 冒泡排序、快速排序、插入排序、选择排序

weixin_46710559的博客 1940

python插入排序、快速排序

'''插入排序''' def insertion(mylist): #从右边的无序数组中去除多少个值执行当前过程 for i in range(len(mylist)): #内层循环的起始值 temp_index = i while temp_index > 0: #从右边的无序数组中取出第一个值,和前...

qq_45061361的博客 266
上一篇: MySQL 整体架构与 SQL 执行原理,数据库事务原理
下一篇: Python 合并多个TXT文件并统计词频!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值