package test;
public class QuickSort {
//比較的時候感覺和二叉樹有點類似。
public static void quickCore(int[] arr, int low, int hight) {
//判斷數組是否查詢完畢
if (low >= hight) {
return;
}
//臨時數字儲存關鍵字(對比字段)
int temp = arr[low];
//與關鍵字對比,先從後往前掃描,遇到比關鍵字小的,就將這次比較的值填充到指針開始的地方
//與關鍵字對比,從前往後掃描,遇到比關鍵字大的,就將這次比較的值填充到指針結束的地方
//填坑操作最後一步就是把最初那個臨時的數字放進最後一個坑
int i = hight, j = low;
while (i > j) {
while (i > j && arr[i] >= temp) {
i--;
}
if (i > j) {
arr[j] = arr[i];
j++;
}
while (i > j && arr[j] <= temp) {
j++;
}
if (i > j) {
arr[i] = arr[j];
i--;
}
}
arr[i] = temp;
//分而治之(將關鍵字左邊的數組循環快排)
quickCore(arr, low, i - 1);
//分而治之(將關鍵字右邊的數組循環快排)
quickCore(arr, j + 1, hight);
}
// 排序的入口
public static int[] sort(int arr[]) {
int low = 0;
int hight = arr.length - 1;
quickCore(arr, low, hight);
return arr;
}
}
快速排序(java)筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.