[英]QuickSort stack overflow for sorted arrays (works for other data sets)
[英]Quicksort - slower on sorted arrays?
所以我正在嘗試一些排序算法。
private static void quicksort(int[] list, int low, int high){
int pivot = list[low + (high-low)/2];
int i = low;
int j = high;
while (i <= j) {
while (list[i] < pivot) {
i++;
}
while (list[j] > pivot) {
j--;
}
if (i <= j) {
int temp = list[i];
list[i] = list[j];
list[j] = temp;
i++;
j--;
}
}
if (low < j){
quicksort(list, low, j);
}
if (i < high){
quicksort(list, i, high);
}
}
這段代碼運行在兩個整數數組上,每個數組都有x個(比如10億)。 第一個是排序的,第二個是陣列1上的排列,其中n對是隨機選擇和切換的。
我選擇中間元素作為樞軸,所以它應該是分類情況的最佳選擇,對吧?
我正在測量算法對每個數組進行排序所花費的時間,並計算出遞歸的次數和次數。 正如預期的那樣,對於具有隨機排列的排序陣列2,這兩個值都更高。
但是:算法仍然需要更長的時間來處理排序的數組,直到我達到大量的排列。 對於n = 10000,對於未排序的數組,我得到20ms,對於排序的數組,得到20ms。 這是為什么?
quickSort算法的最壞情況是當數組被排序或幾乎排序時。 這很可能是為什么它需要你更長的時間來排序已經排序的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.