「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」。
选择排序
前文
本文内容是个人对于选择排序相关知识的一些个人总结及整理,不能保证完全准确,难免出现偏差之处,还请见谅。
选择排序
选择排序是一种相对来说直观且简单的排序算法,相对于其他一系列的排序算法来说,他的操作可以说是最简单之一。这个算法的具体思路如下:首先在尚未排序的队列中找到最大的元素或最小的元素,并将其放在目标队列的首位。然后在剩余的队列中再次找到最大值或最小值,并再次将其放在目标队列也就是已排序队列的末尾。按照这个思路,反复对后续的队列进行以上操作,直到整个待排序队列执行完毕,也就得到了已经排好序的目标队列,按照从大到小或从小到大的顺序。
根据上述的选择排序算法的方案可知,该算法需要不停的对队列进行遍历操作,遍历的总次数会稳定达到n^2,也就是该算法的时间复杂度会达到o(n^2),且无论最高时间复杂度与最低时间复杂度都会达到n^2,显然这不是一种追求时间复杂度的算法。
public void sort(int[] list){
for(int i = 0; i < list.length - 1; i++){
max = i;
for(j = i + 1;j < list.length;j++){
if(list[max] < list[j]){
max = j;
}
}
swap(i,max);
}
}
如上所示为一段简单的选择排序代码。其中list为我们传入的待排序数据。首先需要对于队列进行循环。而在循环中预置一个变量用来存储最大值。然后在内层进行下一轮的循环,将数据与max变量保存的数据进行比较。直至得到每一轮循环的最大值索引。然后每一轮都要进行一次替换,将该位置的最大值替换到队列中的对应位置。以此方式对于整个队列循环即得到最终的排序结果。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。