1.結束條件: low = high
2.快速排序要分而治之。故需要分的位置,位置便是當前元素經過排列後應該所在的位置。
3.對於單次的排列,都使得乙個元素排在了正確的位置,她的左面比她小,右側比她大。
package com.jue.quicksort;
public class quicksort ;
logs("old : ", data);
quicksort(data, 0, data.length - 1);
logs("new : ", data);
} static void logs(string str, int data)
system.out.println(sb);
} public static void quicksort(int data, int low, int high)
int index = getsortedindex(data, low, high);
quicksort(data, low, index - 1);
quicksort(data, index + 1, high);
} private static int getsortedindex(int data, int low, int high) else if (currentdata <= data[high])
} else if (currentdataindex == high) else if (currentdata >= data[low])
}} return currentdataindex;
}}
輸出的結果
實現 快速排序
快速排序的基本思想 1 先從數列中選擇乙個數作為基準數 一般會把陣列中最左邊的數當做基準數 2 然後從數列兩邊進行檢索 先從右邊檢索比基準數小的,再從左邊檢索比基準數大的 如果檢索到了,就停下,然後交換這兩個元素。然後再繼續檢索。3 直到左檢索和右檢索相遇,把基準數和相遇位置的數交換。4 第一輪檢索...
快速排序實現
快速排序的 快 是因為使用了 分治法 使其時間複雜度降低到了 nlogn author qucg version 2019 5 19 description 快速排序,快速排序的 快 是因為使用了 分治法 public class quicksort 得到基準元素位置 int pivotindex ...
快速排序實現
快速排序的基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,從而使全部的資料有序。快排的平均時間複雜度是o nlogn 最壞是o n 2 1 public class ...