选择排序,从字面上来说,就是要把一组数列中的元素给选择出来。
比方说给定一组数列,要求把其中的元素进行从小到大排序,那么只需要在进行每次排序的时候,都把最小的元素给选择出来,放在数列的第一位即可,第二次排序第三次排序同理,把后面数列中的最小元素给选择出来,放在已经排序好的元素的末尾,直到最后需要排序的元素没有为止。
这里有几个注意点:
1、第一次排序是遍历整个数列,把最小的元素给选择出来放在第一位。
2、第二次排序开始是遍历除了第一个元素外的后面的数列,把后面数列当中最小的元素给选择出来放到第一个元素后面一位。
3、第三次排序同理,直到最后一次排序把整个数列以从小到大的方式打印出来。
可以发现,在进行选择排序的过程中,每次最为重要的就是选择出一个最小的元素然后进行排序。
为了让整个流程更加清晰,我画了一张流程图,也能在以后来帮助自己理解。
这里最容易搞混的地方,我在自己写代码理逻辑的时候也容易出现问题,那就是这个交换位置到底应该放在哪边,所以,为了讲的更清楚一些,我打算用实际例子来举例一下。
外循环是遍历数组中所有的元素,内循环是遍历除了当前元素的所有元素,然后要进行一个条件判断,也就是找出最小的元素,之后与当前元素交换位置。
那么内循环进行遍历的时候,可能会遍历到许多个比当前元素要小的元素,如果在这里进行位置交换,那岂不是就会交换好多次,与我们期望的不符,所以交换位置不能放在内循环里。
所以逻辑应该改为:在进行完内循环后,把最小元素给选择出来,然后再交换位置。
大家可以看到,交换位置的逻辑与冒泡排序和直接插入排序交换位置的逻辑并无多大差别,无非这里要进行交换位置的时候必须得把最小元素给选择出来再交换位置,而不是找到一个最小元素就直接交换位置。
测试结果
总的来说,选择排序其实难度不大,但是如果刚开始学习数据结构的话,的确会有些不清楚,最重要的就是要理清逻辑,理清逻辑之后,因为内循环的主要目的是找到最小元素,如果在内循环中交换位置的话,那就没有意义了,所以要在内循环外交换位置。
总的来说,难度不大,测试结果也与我们最终期望得到的结果相同。
本文由知识库于2021-09-15发表在龙哥云资源网,如有疑问,请联系我们。本文链接:https://www.longgeyun.com/knowledge/3778.html
上一篇惠普1010打印机(电脑打印机驱动安装步骤)
下一篇怎么删除脚注(删除某一个脚注的方法)
高校最常见的食物中毒有哪些
急性肠胃炎与食物中毒怎么分辨
莫代尔面料和纯棉面料哪个好内裤 哪个儿童可以穿
为什么说开速腾的都不是一般人 速腾开出去有面子吗
活珠子和毛蛋的区别在哪里 哪个好吃
家里放石头的八大禁忌有哪些 家中石头最佳摆放位置
怎么判断自己帅还是丑男 男生怎样越长越帅
单身女生红绳戴左手还是右手 女生红绳戴哪里合适
Pr2020零基础快速入门
文字转语音App最新版3.0
APP下载页源码-带后台