排序算法-选择排序

算法简介#

选择排序就是找到数组中最小元素将其和数组第一个元素交换位置,然后在剩下的元素中找到最小元素并将其与数组第二个元素进行交换,以此类推,直至整个数组排序结束。

算法描述#

  • 找到数组中最小元素并将其和数组第一个元素交换位置
  • 在剩下的元素中找到最小元素并将其与数组第二个元素交换,直至整个数组排序

选择

代码实现#

Copy
/** * 选择 * * @param array */ private static void selectionSort(int[] array) { if (array == null || array.length == 0 || array.length == 1) return; int min; for (int i = 0; i < array.length - 1; i++) { min = i; for (int j = array.length - 1; j > i; j--) { if (array[j] < array[min]) min = j;//将最小数的索引保存 } //最小元素与第i位置元素互换 if (array[i] > array[min]) { int temp = array[i]; array[i] = array[min]; array[min] = temp; } } }

性能分析#

最好情况:交换 0 次,但是每次都要找到最小的元素,因此时间复杂度为$ O(n^2) $。

最坏情况:交换 $n-1$次,但是每次都要找到最小的元素,因此时间复杂度为$ O(n^2) $。

平均情况下时间复杂度为$ O(n^2) $。

因为需要一个临时变量来交换元素位置和一个变量记录最小位置,(另外遍历序列时自然少不了用一个变量来做索引),所以其空间复杂度为$O(1)$。

由于每次都是选取未排序序列R中的最小元素 a 与 R 中的第一个元素交换,很可能破坏了元素间的相对位置,因此选择排序是不稳定的。

排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性
选择排序 $O(n^2)$ $O(n^2)$ $O(n^2)$ $O(1)$ 不稳定
posted @   武培轩  阅读(596)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
CONTENTS