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 而當陣列初...