排序算法一:選擇排序

最簡單也最沒用的一種算法,時間複雜度爲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

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