python - 选择排序
前言
选择排序(Selection sort)是一种基本的排序算法。
原理:
- 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置。
- 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
- 直到全部待排序的数据元素的个数为零。
代码实现:
def select_sort(li):
length = len(li)
# i 是一共需要几趟,跟冒泡类似
for i in range(length - 1):
# i 从 0 开始,默认是最小,然后进行比较,所以还需要一个 j
min_index = i
for j in range(i+1, length):
# 第i 个值和后面的值比较,如果大于,交换下标,调换位置
# 如果想把数组排成降序,则把大于号改成小于号
if li[min_index] > li[j]:
min_index = j
# 交换位置
li[min_index], li[i] = li[i], li[min_index]
# 打印每一轮的排序情况
print(f'第{i + 1}轮排序是:{li}')
print(f'最终排好序为:{li}')
if __name__ == '__main__':
li = [3, 8, 9, 1, 5]
print(f'初始数列:{li}')
select_sort(li)
#结果:
#初始数列:[3, 8, 9, 1, 5]
#第1轮排序是:[1, 8, 9, 3, 5]
#第2轮排序是:[1, 3, 9, 8, 5]
#第3轮排序是:[1, 3, 5, 8, 9]
#第4轮排序是:[1, 3, 5, 8, 9]
#最终排好序为:[1, 3, 5, 8, 9]
选择排序和冒泡排序的区别:
- 冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值;
- 冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;
- 冒泡排序是通过数去找位置,选择排序是给定位置去找数;
--------------
有些事情持续坚持了很久,你就想让它延续,不想让它中断,不然会觉得很可惜。
在坚持的过程中,你就会变得不那么烦躁和焦虑。其他的也会向好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现