排序算法一:选择排序

最简单也最没用的一种算法,时间复杂度为O(n²),而且不稳定,工程中一般不用…

思想:指定一个当前最小数(一般选第一个数),记录其下标为minpos,将它与后面的每一个数依次比较,若有数小于当前最小数,则交换两者的下标,并交换两个数的位置,重复上述步骤直到排好序

平均时间复杂度:O(n²),空间复杂度:1,不稳定

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
       int[] arr={2,5,6,2,1,4,3,7,6};
       for(int i=0;i<arr.length-1;i++){
           int minpos=i;         //假定当前最小数为第一个数,定义当前下标
           for(int j=i+1;j<arr.length;j++){              //从第二个数开始依次与最小数比较
               if (arr[j]<arr[minpos]){
                   minpos=j;                          //若后面的数小于当前最小数,则交换二者下标
               }
           }
           int temp=arr[i];                              //将此时的最小数与原最小数交换
           arr[i]=arr[minpos];
           arr[minpos]=temp;
       }
       for(int i=0;i<arr.length;i++){                   //循环打印排好序的数组
           System.out.print(arr[i]+" ");
       }
    }
}

运行结果:

1,2,2,3,4,5,6,6,7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章