快速排序(比希爾排序還要快)

2022-10-10 11:30:13 字數 668 閱讀 1073

public static void quicksort(int arr,int left,int right)

//在pivot右邊一直找,找到大於等於pivot值,才退出

while(arr[r] > pivot)

//如果l >= r,說明左邊都是<=pivot的值,右邊都是》=pivot的值

if(l >= r)

//交換

temp = arr[l];

arr[l] = arr[r];

arr[r] = temp;

//如果交換完後,發現這個arr[l] == pivot,那麼r前移

if(arr[l] == pivot)

//如果交換完後,發現這個arr[r] == pivot,那麼l後移

if(arr[r] == pivot)

} //不判斷,出現棧溢位

if(l == r)

//向左遞迴

if(left < r)

//向右遞迴

if(right > l)

}

//8000 0000 17781ms

//800 0000 1632ms

//80 0000 154ms

//8 0000 27ms

為什麼快速排序比堆排序要快?

今天作演算法排序實驗,發現相同的資料規模,快速排序比堆排序的效率高很多,並且隨著資料規模的擴大,二者的差距不斷擴大,快速排序的優勢越來越明顯。快速排序的時間複雜度近似線性增長,堆排序則要大很多。究其原因,應該有以下幾個方面 在堆排序 小根堆 的時候,每次總是將最小的元素移除,然後將最後的元素放到堆頂...

一種情況下插入排序比希爾排序要快

我們都知道希爾排序是插入排序的優化。希爾排序會在進行插入排序前把數列分組,然後會根據需要把陣列內部的數字先進行順序排列,最終減少插入排序時移動元素的次數,達到優化的目的。但是我這邊簡化了部分插入排序的 結果在最後測試的時候,插入排序竟然會比希爾排序要快。這裡似乎是說希爾排序的 還能再繼續優化?或者還...

希爾排序,堆排序,快速排序

插入排序的改進演算法,不穩定的排序演算法,空間複雜度為o 1 public static void shellsort int a 氣泡排序的改進演算法,不穩定的排序演算法 空間複雜度在o log2n 和o n 之間 時間複雜度在o n 和o n2 之間,平均時間複雜度為o nlog2n 而當陣列初...