千家信息网

如何使用python实现选择排序

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍如何使用python实现选择排序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!选择排序简单理解:以升序来说,在每次遍历待排序数组时,默认首位的元素为最小,然后逐
千家信息网最后更新 2026年10月31日如何使用python实现选择排序

这篇文章主要介绍如何使用python实现选择排序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

选择排序简单理解:以升序来说,在每次遍历待排序数组时,默认首位的元素为最小,然后逐个把剩余元素与该首位元素进行比较,如果小于则二者交换位置,这样遍历完一次数组,就能确定把最小的一个元素放到首位。每次遍历完数组时,均能确定一个相对最小元素,因此相对于上次遍历的数组来说,此次的数组长度减1,即已经确定为最小的元素不再参与后续的遍历,正常情况下经过原数组长度减1次遍历即可完成排序。
def selection_sort(alist):    '''选择排序'''        last = len(alist)    first = 1        while first < last:        print(first)  # 可以理解为第几次遍历        for i in range(first,last):            if alist[i] < alist[first-1]: # 从小到大排列                alist[first-1],alist[i] = alist[i],alist[first-1]        print(alist)   # 每次遍历完的结果                first += 1
return alist

if __name__ == '__main__': alist = [2,4,7,1,6,5,3] print(selection_sort(alist))


代码流程:首先获取数组长度last,初始遍历时,默认0索引位置的元素最小,因此令first为1,first代表的意思是第一个与默认最小值进行比较的元素的索引(比如在进行第一轮遍历时,肯定是索引为1的元素与索引为0的元素比较,后面每轮的遍历类似推理即可);接着进入while循环,这里以开始比较的元素的索引与数组长度作条件判断,小于则进入遍历,否则终止循环(此内容下文针对示例结果具体讲解);对于内部的for循环,注意其范围:后者小于前者交换位置,否则不交换,这里可以看出后者元素的索引减1即为前者元素的索引,还是拿首次遍历来说,当first为1时,其减1则为0,因此实现了第一个元素与默认为最小的0位置的元素的比较,到了第二次遍历时,first为2,其减1为1,可实现2位置的与1位置的比较大小(此时的1为第二次遍历时的数组的首个元素的索引 '0')。。。。依次类推实现排序,在每次遍历完后可通过打印数组来查看每次的结果。first加1,就是由于每遍历一次,待排序的数组长度减1。下面结合示例结果说说:

1   # first值[1, 4, 7, 2, 6, 5, 3]  # 第一次遍历结果2   # first值[1, 2, 7, 4, 6, 5, 3]  # 第二次遍历结果3   # first值[1, 2, 3, 7, 6, 5, 4]  # 第三次遍历结果4   # first值[1, 2, 3, 4, 7, 6, 5]  # 第四次遍历结果5   # first值[1, 2, 3, 4, 5, 7, 6]  # 第五次遍历结果6   # first值[1, 2, 3, 4, 5, 6, 7]  # 第六次遍历结果
[1, 2, 3, 4, 5, 6, 7] # 最终结果


结果分析:待排序数组长度为7,则只需遍历6次,前6次确定6个元素,则最后一个元素无需比较。当first为6时,6<7,进入循环,比较的是上一轮第五次结果

[1, 2, 3, 4, 5, 7, 6]中的list[6]与list[6-1]的大小,也就是数值7和6交换位置,此时已经却确定好前6个数的位置,剩下最后一个位置的数,接着打印出第六次结果,然后first加1,此时7<7不成立,终止循环,此时的最后一个位置的数不进行比较也是最大的了,返回排序好的数组,结束。


复杂度:选择排序的平均复杂度仍为n**2;最优时间复杂度为n,即原数组为有序数组,遍历第一次时如果未发生交换即可跳出循环,可设定一个变量来记录交换次数详情可参考排序之冒泡排序该文章中的相关做法。

以上是"如何使用python实现选择排序"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

元素 数组 结果 排序 位置 索引 最小 长度 循环 选择 复杂 内容 复杂度 大小 次数 示例 第一次 篇文章 一轮 参考 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云信互联网科技有限公司 朗新科技与工业互联网 深圳互联网科技公司 互联网金融 金融科技 亿人帮互联网科技 国外互联网科技网站 衡水科技产业互联网平台 汉立互联网科技有限公司联系电话 互联网企业和科技型企业 来此购互联网科技有限公司 语蝶互联网科技有限公司 江阴互联网智能科技产品进口 互联网保险科技创业 互联网科技人工智能实验室 互联网科技如何创业 中科明德北京互联网科技 广州富喜互联网络科技 互联网硬科技公司 互联网科技创新方面的资料 利用互联网等科技手段 科技互联网项目 广州互联网科技公司 多迪互联网科技有限公司 山东吉时兔互联网科技有限公司 荆州市昕露互联网络科技有限公司 银川新华互联网科技学校联系电话 电子商务与互联网科技的关系 深圳互联网科技园地址 杭州融税互联网科技有限公司 科技互联网企业在行动
0