常用排序算法:直接选择排序[通俗易懂]

常用排序算法:直接选择排序[通俗易懂]常用排序算法:直接选择排序

大家好,又见面了,我是你们的朋友全栈君。

直接选择排序算法思路:

第 1 趟,在待排序记录 r1 ~ r[n]中选出最小的记录,将它与 r1 交换;第 2 趟, 在待排序记录 r2 ~ r[n]中选出最小的记录,将它与 r2 交换;以此类推,第 i 趟在待排序 记录 r[i] ~ r[n]中选出最小的记录,将它与 r[i]交换,使有序序列不断增长直到全部排序 完毕。

例如[2, 4, 3, 1, 0],第一趟找到最小值为0,将0和第一位交换,得到[0, 4, 3, 1, 2],第二趟从[4, 3, 1, 2]中找到最小值1,再和第一位交换得到[0, 1, 3, 4, 2],以此类推知道排序完成。

代码实现:

def select_sort(nums):
    for i in range(len(nums)):  # 第i趟开始时 无序区为:[i:]
        min_pos = i  # 最小值位置
        for j in range(i + 1, len(nums)):  # 在无序区里面找最小值,并记录位置
            if nums[j] < nums[min_pos]:
                min_pos = j
        nums[min_pos], nums[i] = nums[i], nums[min_pos]  # 交换
        print(nums)


select_sort([2, 4, 3, 1, 0])

# [0, 4, 3, 1, 2]
# [0, 1, 3, 4, 2]
# [0, 1, 2, 4, 3]
# [0, 1, 2, 3, 4]
# [0, 1, 2, 3, 4]

 

转载于:https://www.cnblogs.com/FanMLei/p/10501000.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107244.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自动化测试系列(三)|UI测试「建议收藏」

    自动化测试系列(三)|UI测试「建议收藏」UI测试是一种测试类型,也称为用户界面测试,通过该测试,我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的BUG。了解用户将如何在用户和网站之间进行交互以执行UI测试至关重要,通过执行UI测试,测试人员将尝试模仿用户的行为,以查看用户将如何与程序进行交互,并查看网站的运行情况是否如预期的那样,是否有缺陷。在上次的自动化测试系列(二)中为大家大体介绍了API测试的概念及在猪齿鱼中的实践展开,本文主要围绕UI测试进行概念介绍及Choerodon中的实践展开。下面.

    2025年7月21日
    3
  • SVNclient安装与使用

    SVNclient安装与使用

    2021年9月3日
    88
  • redis一主一从哨兵模式_kafka主从复制

    redis一主一从哨兵模式_kafka主从复制文章目录Redis持久化RDB(Redis DataBase)AOF(Append Only File)Redis持久化Redis是内存数据库,如果不见内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能RDB(Redis DataBase)什么是RDB:在指定的时间间隔内将内存中的数据集快照写入内存, 也就是行话讲的Snapshot快照,他恢复时是将快照文件直接读到内存中。Redis会单独创建一个子进程来持节话,会先将数据写入到一个

    2022年8月8日
    6
  • lua学习之table类型

    关系表类型,这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是 C语言的数组,只能用正整数来作索引; 在Lua中,你可以用任意类型的值来作数组的索引,但这个值不能是&#1

    2021年12月25日
    45
  • 如何查看/统计当前AD域控制器的活动用户

    如何查看/统计当前AD域控制器的活动用户

    2022年3月11日
    46
  • ucinet网络分析使用总结

    ucinet网络分析使用总结ucinet介绍UCINET为菜单驱动的Windows程序,可能是最知名和最经常被使用的处理社会网络数据和其他相似性数据的综合性分析程序。与UCINET捆绑在一起的还有Pajek、Mage和NetDraw等三个软件。UCINET能够处理的原始数据为矩阵格式,提供了大量数据管理和转化工具。该程序本身不包含网络可视化的图形程序,但可将数据和处理结果输出至NetDraw、Pajek、Mage和Kr…

    2022年6月7日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号