選擇排序也是一種o(n ^ 2)時間複雜度的排序演算法,選擇排序是每一次迴圈都將找到最小值,依次將最小值、次小值分別從左至右進行排序。以下是具體實現過程,其中使用的工具類這篇部落格已經給出,(
import cn.zjut.util.sorttestutil;
public class selectsort }}
這種選擇排序,每一次只能找最小值,可以對其進行優化,每一次迴圈找乙個最小值和最大值,頭尾同時進行,因此需要兩個標定點分別指向頭尾元素。以下是優化後的選擇排序實現過程
import cn.zjut.util.sorttestutil;
public class selectsortimprove
sorttestutil.swap(arr, minindex, left);
sorttestutil.swap(arr, maxindex, right);
left++;
right--;}}
}下面是測試**,測試資料是10000個資料,分別對隨機數組,和近乎有序的陣列進行測試
import cn.zjut.util.sorttestutil;
public class main
}測試結果如下
根據結果,雙路選擇排序時間效率優於簡單選擇排序 。以上整個過程就是選擇排序的實現過程。
十大排序演算法 選擇排序
原理 第一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小 大 元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。工具類public class utils 用於交換陣列兩個下標的位置 static void...
十大排序演算法之選擇排序2
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。2.1 演算法描述 n個記錄的直接選擇排序可...
十大排序之選擇排序《Blind Stab》
選擇排序 public class choose for int i 0 i arr.length 1 i int temp arr i arr i arr index arr index temp for int i 0 i arr.length i 分析 n個資料,進行選擇排序,順序若是從小到大...