1. 程式人生 > >排序(五)選擇排序

排序(五)選擇排序

單選 auto .com spl left 有關 img 時間復雜度 空間

參考文檔:

原理:

對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄與第一個記錄的位置進行交換;接著對不包括第一個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二個記錄進行位置交換;重復該過程,直到進行比較的記錄只有一個時為止

技術分享圖片

代碼實現:

public static void selectSort(int[] num) {
        for(int i=0;i<num.length;i++){
            int k=i;
            for(int j=num.length-1;j>i;j--){
                
if(num[j]<num[k]){ k=j; } } if(k!=i){ swap(num, i, k); } } } public static void swap(int []arr,int a ,int b){ int temp=arr[a]; arr[a] = arr[b]; arr[b] = temp; }

算法分析:

  • 時間復雜度:O(N2)

簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 N 個元素,則比較次數總是N (N - 1) / 2
而移動次數與序列的初始排序有關。當序列正序時,移動次數最少,為 0
當序列反序時,移動次數最多,為3N (N - 1) / 2
所以,綜合以上,簡單排序的時間復雜度為 O(N2)

  • 空間復雜度:O(1)
  • 穩定性:不穩定

排序(五)選擇排序