簡單選擇排序 java實現
阿新 • • 發佈:2018-11-08
簡單選擇排序
基本思想:在要排序的一組數中,選出最小的一個數與第一個位置的數交換;然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。
程式碼實現如下
public class SimpleSelectSort {
public static void main(String[] args) {
int[] arr={34,23,4,52,33,54,11,7,10,45,29};
simpleSelectSort(arr);
System.out.println("簡單選擇排序最終結果:" +toString(arr));
}
private static void simpleSelectSort(int[] arr) {
for(int i=0;i<arr.length-1;i++){
int temp=0;
int key=i;//假設剛開始是第i個位置最小
for(int j=i+1;j<arr.length;j++){
if(arr[key]>arr[j]){
key=j; //將最小值的索引賦值給key
}
}
temp=arr[i];
arr[i]=arr[key];
arr[key]=temp;
System.out.println("迴圈第"+i+"次,排序結果:"+toString(arr));
}
}
//將陣列轉為字串
public static String toString(int[] a){
StringBuffer sb=new StringBuffer();
for (int each:a){
sb.append(each+" ");
}
return sb.toString();
}
}
執行結果
時間複雜度:
簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 N 個元素,則比較次數總是N (N -1) / 2。
移動次數—當正序時,移動次數為0,當反序時,移動次數為3N(N-1)/2。所以時間複雜度為O(n^2).
空間複雜度:
簡單選擇排序需要佔用 1 個臨時空間,在交換數值時使用。