1. 程式人生 > >【演算法與資料結構】---------選擇排序

【演算法與資料結構】---------選擇排序

     選擇排序是對氣泡排序的優化,其比對的次數並沒有減少,仍保持為O(n^2).減少了其氣泡排序的交換次數,從O(n^2)減少到O(n).

   選擇排序在每一輪比較完之後,才進行位置交換。

演算法分析:選擇排序最好和最壞的情況一樣運行了O(n^2).時間,但是選擇排序無疑更快,因為它進行了更少的交換。當N值較小時,特別是交換時間比比較時間大的多時,選擇排序是相當快的,平均複雜度是O(n^2).

選擇排序演算法不穩定:當a=b時,假設a的位置在b的前面,最小值在b的後面,當最小值和a交換位置的時候,a就到了b的後面,所以選擇排序演算法是不穩定的。

程式碼如下:

public class SelectSort {
     public static void selectSort(int[] arr){
         for(int i = 0;i < arr.length-1; i++){
              int index = i;
              for(int j = i+1;j< arr.length-1;j++){
                   if(arr[j] < arr[index]){
                       index = j;
                   }
              }
              int a = arr[index];
             arr[index] = arr[i];
             arr[i] = a;
         }
     }

}