选择排序(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。

posted @   我是老邱  阅读(454)  评论(1编辑  收藏  举报
编辑推荐:
· 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语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示