选择排序算法讲解

选择排序,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来,和剩下的数进行比较,再顺序放入新数组,直到全部拿完

举个例子,有数组[10, 1, 18, 30, 23, 12, 7, 5, 18, 17],我们使用从小到大的排序方法

第一趟,外排下标为0,对应数组值10

内排开始

①下标0和下标1的值进行比较。10和1比,发现1比10小,进行互换,内排一次完成,结果是[1, 10, 18, 30, 23, 12, 7, 5, 18, 17]

②下标0和下标2的值进行比较。因为经过了前面的一次内排,这个时候下标0的值是1了,1和18比,1比18小,保持不变,结果是[1, 10, 18, 30, 23, 12, 7, 5, 18, 17]

③下标0和下标3的值进行比较。因为经过了前面的一次内排,这个时候下标0的值是1了,1和30比,1比30小,保持不变,结果是[1, 10, 18, 30, 23, 12, 7, 5, 18, 17]

……一直这样比下去,直到1和最后一个元素17进行对比

第一趟比较结束,结果是[1, 10, 18, 30, 23, 12, 7, 5, 18, 17],我们发现1是整个数组中最小的元素,放在在前面了,符合预期

第二趟,外排下标为1,对应数组值10

内排开始

①下标1和下标2的值进行比较。10和18比,发现10比18小,保持不变,内排一次完成,结果是[1, 10, 18, 30, 23, 12, 7, 5, 18, 17]

②下标1和下标3的值进行比较。10和30比,发现10比30小,保持不变,内排二次完成,结果是[1, 10, 18, 30, 23, 12, 7, 5, 18, 17]

…………

⑤下标1和下标6的值进行比较。10和7比,发现10比7大,进行互换,内排5次完成,结果是[1, 7, 18, 30, 23, 12, 10, 5, 18, 17]

⑥下标1和下标7的值进行比较。经过上一次排列,下标1的值为7,7和5比,发现7比5大,进行互换,内排6次完成,结果是[1, 5, 18, 30, 23, 12, 10, 7, 18, 17]

…………经过一系列排序,结束,结果为[1, 5, 18, 30, 23, 12, 10, 7, 18, 17]

第三趟

…………结果为[1, 5, 7, 30, 23, 18, 12, 10, 18, 17]

…………

…………

最终结果为[1, 5, 7, 10, 12, 17, 18, 18, 23, 30]

至此,排序完成。

代码实战如下

python实现选择排序

java实现选择排序

go实现选择排序

你可能感兴趣的:(算法与数据结构,算法和数据结构)