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

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

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

直接选择排序算法思路:

第 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win32中SetCapture 和 ReleaseCapture的使用

    win32中SetCapture 和 ReleaseCapture的使用     最近在用win32写《visualC++经典游戏程序设计》中的扫雷游戏,在写到鼠标点击雷区的时候用到了SetCapture,和ReleaseCapture这对系统函数。那么为什么需要用到鼠标捕获的函数呢?我错误地认为鼠标的跟踪可以由Point进行传值处理,就能实现我想要的功能,但是我却疏忽了如果我的鼠标按下的时候把鼠标移除窗口外面的情况,这种情况的时候鼠标是在外面的,那么当我把鼠标弹起的时候鼠标的位置就不在扫雷窗口里面了,因此我需要在按下鼠标的时候捕获鼠标的位置,这样就解决了鼠标不在窗口里面的

    2022年6月6日
    28
  • 打开浏览器访问 www.baidu.com 获取到结果,整个流程

    打开浏览器访问 www.baidu.com 获取到结果,整个流程

    2021年11月11日
    57
  • 新东方尹圆圆老师的博客上找来的「建议收藏」

    新东方尹圆圆老师的博客上找来的「建议收藏」这些网站是从新东方尹圆圆老师的博客上找来的,希望大家好好利用:1.http://www.texun.cn/addrso/index.htm特训网:EnglishLearningWebsites2.http://broadcast-live.com/LiveRadioandTVfromAroundtheWorld3.http://www.nxenglish…

    2022年9月13日
    1
  • Microsoft.NET PetShop4架构与技术分析

    Microsoft.NET PetShop4架构与技术分析&#13;1.项目概述与架构分析&#13;微软刚推出了基于ASP.NET2.0下的PetShop4,该版本有了一个全新的用户界面。是研究ASP.NET2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户…

    2022年10月16日
    0
  • Redis除了做缓存,还可以怎么用?网友:点赞功能啊

    点赞功能是目前app开发基本的功能 今天我们就来聊聊点赞、评论、收藏等这些场景的db数据库设计问题~ 1. 我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必…

    2021年6月22日
    70
  • 最大公约数和最小公倍数的关系

    最大公约数和最小公倍数的关系联系:最大公约数:指两个或多个整数共有的约数中最大的那个最小公倍数:指两个或多个整数共有的倍数中最小的那个以两个整数为例:最大公约数表示为:(a,b)最小公倍数表示为:[a,b]定理:(a,b)X[a,b]=ab(a,b均为整数)例题:#include<stdio.h>intmain(){ intm,n,min=0,max=0; scanf(“%d%d”,&m,&n); //求最大公约数 for(inti

    2022年5月17日
    63

发表回复

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

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