Python排序算法有哪些
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Python排序算法有哪些",在日常操作中,相信很多人在Python排序算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python排序算法有
千家信息网最后更新 2026年11月03日Python排序算法有哪些
这篇文章主要介绍"Python排序算法有哪些",在日常操作中,相信很多人在Python排序算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python排序算法有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
随机值
这一次的测试数据与上一次的不同,上一次确实是太规律了,所以这一次采用随机值:
from random import randint
data = [randint(6, 20000) for i in range(30000)]
data.insert(500, 5)
data.insert(700, 7)
data.insert(900, 9)
并且还在生成的随机值列表中不同位置插入 3 个值,有了不规律的随机值,接下来就可以开始测试了。
冒泡排序
def bubble(data):
for i in range(len(data)-1): # 排序次数
for s in range(len(data)-i-1): # s为列表下标
if data[s] > data[s+1]:
data[s], data[s+1] = data[s+1], data[s]
return data
start_time = datetime.now()
res = bubble(data)
print(datetime.now() - start_time)
print(len(res), res[:5], res[700:705], res[10000:10005])
得到的输出结果为:
0:01:20.273247
30003 [5, 6, 7, 7, 7] [492, 492, 492, 493, 495] [6665, 6665, 6666, 6668, 6668]
80 秒!冒泡排序的测试结果证明,随机元素的列表排序比规律元素的列表排序费时更久。
选择排序(两层 for)
def selections(nums):
for i in range(len(nums)):
min_index = min(nums) # 最小值
for j in range(len(nums) - i):
if nums[min_index] < nums[j]:
min_index = j
nums[min_index], nums[len(nums) - i - 1] = nums[len(nums) - i - 1], nums[min_index]
return nums
start_time = datetime.now()
res = selections(data)
print(datetime.now() - start_time)
print(len(res), res[:5], res[700:705], res[10000:10005])
得到的结果为:
0:01:07.171114
30003 [6, 6, 7, 7, 8] [444, 445, 445, 446, 447] [6652, 6654, 6654, 6654, 6654]
本次耗时 67 秒,而之前使用规律的值排序时耗时约 47 秒。选择排序(两层 for)的测试结果同样证明了随机元素的列表排序比规律元素的列表排序费时更久。
选择排序(min max)
start_time = datetime.now()
res = []
for i in range(0, len(data)):
aps = min(data)
data.remove(aps)
res.append(aps)
print(datetime.now() - start_time)
print(len(res), res[:5], res[700:705], res[10000:10005])
运行后得到的输出结果为:
0:00:10.102158
30003 [5, 6, 6, 7, 7] [443, 443, 443, 444, 444] [6645, 6646, 6649, 6650, 6650]
这一次耗时 10 秒,甚至比之前规律元素排序耗费的 14 秒更省时间。
插入排序
def direct_insert(nums):
# 崔庆才丨静觅、韦世东丨奎因 邀请你关注微信公众号【进击的Coder】
for i in range(1, len(nums)):
temp = nums[i] # temp变量指向尚未排好序元素(从第二个开始)
j = i-1 # j指向前一个元素的下标
while j >= 0 and temp < nums[j]:
# temp与前一个元素比较,若temp较小则前一元素后移,j自减,继续比较
nums[j+1] = nums[j]
j = j-1
nums[j+1] = temp # temp所指向元素的最终位置
return nums
start_time = datetime.now()
res = direct_insert(data)
print(datetime.now() - start_time)
print(len(res), res[:5], res[700:705], res[10000:10005])
运行后得到的输出结果为:
0:00:57.681174
30003 [5, 6, 6, 7, 7] [455, 456, 459, 459, 460] [6647, 6649, 6649, 6649, 6649]
这一次插入排序的速度再不是快的离谱了,在猜想范围之内。
迷雾散去
相比上一次使用非常规律的 [ i for i in range(3000)],这一次使用 randint 生成的列表肯定是非常不规律的:
print(data[:20])
打印列表前 20 的元素,得到结果为:
[13698, 19871, 8468, 8735, 3473, 510, 788, 5070, 14585, 13324, 11743, 4310, 16460, 7102, 1900, 16608, 12342, 9724, 1482, 19609]
这些元素的值有百位、千位、万位,证明了它们确是是不规律的。
多次测试得到的结果都相差无几,在以上几种排序的测试中,3 万左右的数据量排序最快的是选择排序(min max),它的排序速度保持在 10 秒内。
到此,关于"Python排序算法有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
排序
元素
规律
结果
测试
算法
学习
选择
指向
上一
输出
不同
接下来
下标
位置
数据
更多
速度
帮助
生成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网
致骋互联网科技
碳银互联网科技
鑫亿盛互联网科技
睿民互联网科技
友谊互联网络科技
苏州大垚互联网科技
齐家互联网科技有限公司
昭通互联网科技选哪家
新兴科技互联网创新大赛颁奖典礼
辽宁互联网新科技
亳州好赞互联网科技有限公司
中国科技创新与世界互联网大会
启辰互联网科技
互联网科技年终奖
世界互联网科技成果奖
互联网科技企业商标注意事项
北京互联网科技类企业分布
米泉互联网科技专业怎么样
唐山双旺合互联网科技产业园
科技互联网项目
互联网与科技发展
关于新基建和互联网科技
喔噻互联网科技
互联网未来科技
顺玮阁互联网科技
齐家互联网科技有限公司
科技赋能互联网健康
速维有品互联网信息科技(苏州)有限公司
互联网方面的科技前沿