选择排序

选择排序

2020-06-21
数据结构

思想 #

第一趟从n个无序记录中选择关键字最小的记录与第1个记录交换,此时第一个记录为有序

第二趟从第二个记录开始的n-1个无序记录中选择关键字最小的与第2个记录交换,此时前两个记录有序

……

如此下去,直到无序序列只剩最后一个元素,排序结束

代码实现 #

    public void selectSort(int[] a) {
        for(int i=0;i<a.length;i++){
            //记录最小元素的位置
            int min=i;
            //该循环来寻找最小元素的位置
            for(int j=i+1;j<a.length;j++){
                if(a[j]<a[min]){
                    min=j;
                }
            }
            //交换第i个元素和最小元素
            int temp=a[i];
            a[i]=a[min];
            a[min]=temp;
        }
    }

复杂度 #

时间复杂度:O(n²)

空间复杂度:O(1)

稳定的排序算法