选择排序(Selection Sort)
一、思路
1、先找到数组中的最小元素,然后跟数组的第一个元素交换位置。
2、在剩下的元素中找到最小元素,然后跟数组的第二个元素交换位置。
3、如此重复,直到将整个数组排序好。
二、代码实现
public static void sort(Comparable[] a) { int N = a.length; for(int i = 0; i < N; i++) { //find the index of minimum from i to N-1 int min = i; for(int j = i+1; j < N; j++) { if(less(a[j], a[min])) min = j; } exch(a, i, min);//put a[min] in a[i] } }
三、性能分析
结论:对于长度为N的数组,选择排序需要~N2/2次比较和N次交换。
分析:
由代码可知,对外循环每个i,内部循环都需要N-1-i次比较和一次交换。
所以总的比较次数为(N-1) + (N-2) + ……+ 2 + 1 + 0 = N(N-1)/2~N2/2。
总的交换次数为N。
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决