选择排序算法分析与实现

1
<br>选择排序 n + n-1 + n-2 + … + 2 + 1 = n * (n+1) / 2 = 0.5 * n ^ 2 + 0.5 * n,那么时间复杂度是O(N^2),这是雷打不动的时间复杂度
1
<em id="__mceDel">    每一趟进行选择出最大值或最小值,然后进行交换首末位置,每趟减少一个<br>    时间复杂度无论什么时候都是o(n^2),因为它是数据规模为n,然后每趟选出最大值或最小值,进行n趟;<br>    空间算法度则为O(1)  因为只用了两中间变量<br><br></em>
复制代码
package sort;

/**
 * @author wyc
 * 选择排序
 */
public class SelectionSort {
    public static void main(String[] args) {
        int[] arrays = {1,11,12,4,2,6,9,0,3,7,8,2};
        selectionSorting(arrays);
        for(int value : arrays){
            System.out.println(value);
        }
    }
    
    private static void selectionSorting(int[] a){
        int max,index;
        for(int len = 0;len < a.length-1;len++){
            max = a[len];
            index = len;
            for(int i = len;i < a.length;i++){
                if(a[i] > max){
                    max = a[i];
                    index = i;
                }
            }
            if(len != index){
                a[len] = a[len] + a[index];
                a[index] = a[len] - a[index];
                a[len] = a[len] - a[index];
            }
        }
    }
}
复制代码

 

posted @   whhhd  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示