使用java實現快速排序的一個簡單例子
阿新 • • 發佈:2018-08-28
fast val rgs 快速 實現 個數 static void sta
public static void main(String[] args) { // 測試排序 Random r = new Random(); int arr[] = new int[10]; for(int i=0;i<10;i++) { arr[i] = r.nextInt(100); } System.out.println("before sort"); for(int i:arr) { System.out.print(i+","); } fastSort(arr, 0, arr.length-1); System.out.println("after sort"); for(int i:arr) { System.out.print(i+","); } } public static void fastSort(int[] arr, int left, int right) { /** * i 從左側查找時的索引 * j 從右側查找時的索引 * tmp 交換數據時,臨時變量 * baseVal 交換比較的基準值 */ int i, j, tmp, baseVal; if (left > right) { return; } baseVal = arr[left]; i = left; j = right; while (i != j) { // i和j不相同,則進行下面的操作 // 要先從右向左找 while (arr[j] >= baseVal && i < j) { // 直到找到比baseVal大的值為止 j--; } // 再從左向右找 while (arr[i] <= baseVal && i < j) { // 直到找到比baseVal小的值為止 i++; } // 交換兩個數在數組中的位置 if (i < j) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } // 最終將基準歸為 arr[left] = arr[i]; arr[i] = baseVal; // 遞歸獲取左側和右側各排序結果 fastSort(arr, left, i - 1); fastSort(arr, i + 1, right); }
使用java實現快速排序的一個簡單例子