1. 程式人生 > >簡單選擇排序 java實現

簡單選擇排序 java實現

簡單選擇排序

基本思想:在要排序的一組數中,選出最小的一個數與第一個位置的數交換;然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。

程式碼實現如下

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 個臨時空間,在交換數值時使用。