【演算法與資料結構】---------選擇排序
阿新 • • 發佈:2018-12-22
選擇排序是對氣泡排序的優化,其比對的次數並沒有減少,仍保持為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; } } }