选择排序
Posted luanxm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序相关的知识,希望对你有一定的参考价值。
数据结构 | 数组 |
---|---|
最差时间复杂度 | O(n^2) |
最优时间复杂度 | O (n^2) |
平均时间复杂度 | O(n^2) |
空间复杂度 | O(1) |
排序方式 | in-place |
稳定性 | 不稳定 |
步骤:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
public class SelectionSort : SortBase { public override void Sort() { int len = arr.Length; int iCount = 0; for (int i = 0; i < len - 1; i++) { iCount++; int jCount = 0; //获取arr[n](外层第n轮)后的最小值 int min = i; for (int j = i + 1; j < len; j++) { jCount++; if (arr[j] < arr[min]) { min = j; } } //arr[n]和最小值交换 if (i != min) { int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } Console.WriteLine($"i:{iCount} j:{jCount}"); base.output(arr); } } //相反的思路 public override void Sort2() { int len = arr2.Length; int iCount = 0; for (int i = len - 1; i > 0; i--) { iCount++; int jCount = 0; int min = i; for (int j = i - 1; j >= 0; j--) { jCount++; if (arr2[j] > arr2[min]) { min = j; } } if (i != min) { int temp = arr2[min]; arr2[min] = arr2[i]; arr2[i] = temp; } Console.WriteLine($"i:{iCount} j:{jCount}"); base.output(arr2); } } }
结果:
以上是关于选择排序的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段