Python排序算法有哪些
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"Python排序算法有哪些",在日常操作中,相信很多人在Python排序算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python排序算法有
千家信息网最后更新 2025年11月13日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安全错误
数据库的锁怎样保障安全
sqlite 写数据库
威海荣成市软件开发
无线传感器网络安全ppt
广西一站网络技术集团简介
每个数据库有且只能有一个
网络技术专业应该找什么工作
山西在线网络技术服务售价
数据库哪本课本
爱思助手怎么转移数据库
惠山区软件开发规范
香港美国腾讯云服务器服务器
应聘软件开发英语自我介绍
统信服务器代理怎么配置
小程序云函数读写数据库
ldap服务器下载
寻找网络安全专家
数据库管理数据表习题及答案
开房数据库查询网站
memcache 数据库
网络安全专家讲座最新
ubuntu 服务器分区
老刘说棋网络技术工作室
数据库装在d盘做镜像可以吗
数据库安全密码设置
中国网络安全在国际位置
苏州阿里云服务器扩容设置
贵阳市网络安全知识在线答题活动
我的世界带剑域的服务器
英语互联网科技双刃剑
软件开发是互联网行业吗