用python实现快速排序,python如何降序排列
当有序区间内有大量数据时,查找数据的插入位置会非常耗时。
1.插入排序算法总是从有序间隔中搜索插入位置,并以此为起点。
2.二分搜索法方法可以用来快速确定要插入的位置,所以有了插入排序算法的优化版本,也叫二分搜索法和插入算法。
实例
definsert _ sort 2(data _ list):
二分搜索法函数用于确定要在有序间隔中插入的元素的插入位置。
Count=0#计算循环次数。
长度=len(数据列表)
for range(1,length) : #默认情况下,第一个位置的元素是排序区间,所以下标从1开始。
打印(数据列表)
Wait _ insert _ data=data _ list[I]# #等待元素被插入
move_index=i
Insert _ index,count 1=binary _ search(data _ list[03360 I],wait _ insert _ data) #查找插入位置
Count=count1#计算循环数需要加上二分搜索法的循环数。
while move _ index insert _ index 3360 #将元素移动到要插入的位置。
计数=1
数据列表[移动索引]=数据列表[移动索引-1]
move_index-=1
数据列表[插入索引]=等待插入数据#插入操作
打印(数据列表)
打印(f 循环总数为{count} )
returndata_list
defbinary_search(data_list,data):
输入:有序列表,以及要查找的数据。
输出:数据应该在有序列表的插入位置。
Count变量纯粹用于计算循环次数,在实际应用中可以删除。
计数=0
长度=len(数据列表)
低=0
高=长度-1
# #如果给定元素大于或等于最后一个元素,则将其插入最后一个元素位置之后。
# #如果它小于第一个元素,则插入位置0
if data=data _ list[length-1]: return length,0
elifdatadata _ list[0]: return 0,0
insert_index=0
whilelowhigh-1:
计数=1
Mid=(低高)//2 # Python中的除法结果默认使用//
ifdata_list[mid]data:
高=中
插入指数=高
else:
低=中
Insert_index=low 1#如果值相同或者值大于mid的值,那么插入位置在其后。
Return _ index,计数。以上是python插入排序的优化方法。希望对你有帮助。更多python学习方向:Python基础课程
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。