选择排序

算法步骤:
1. 未排序序列中找到最小元素,存放到排序序列的起始位置
2. 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾
3. 以此类推,直到所有元素均排序完毕
比较复杂度:n(n-1)/2
交换(赋值)复杂度:n-1
优点:相比冒泡排序来讲,交换的次数减少了
缺点:相对快速排序,比较次数仍然是n²

复制代码
public static void selectionSort(Integer[] array){
        for(int i=0;i<array.length-1;i++){
            //最小数存放位置
            int minPosition = i;
            for(int j=i+1;j<array.length;j++){
                if(array[j]<array[minPosition]){
                    //新的最小数位置
                    minPosition = j;
                }
            }
            //找到剩余元素中的最小数,并将其交换至起始位置
            swap(array, i, minPosition);
        }
        
    }
复制代码
public static void swap(Object[] array,int a,int b){
        Object temp = array[a];
        array[a] = array[b];
        array[b] = temp;
    }
posted @   风过无痕的博客  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示