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