第七章快速排序之「快速排序QUICKSORT」

2021-06-03 00:34:55 字數 580 閱讀 1160

#include using namespace std;

int partition(int *a, int lo, int hi)

} while (a[--j] > key)

} if (i < j)

else

} return j;

}void quicksort(int *a, int lo, int hi)

int j = partition(a, lo, hi);

quicksort(a, lo, j - 1);

quicksort(a, j + 1, hi);

}int _tmain(int argc, _tchar* argv)

printf("隨機生成的陣列:\n");

for (i = 0; iprintf("\n");

quicksort(a, 0, buffer_size - 1);

printf("對陣列進行快速排序:\n");

for (i = 0; isystem("pause");

return 0;

}

第七章 快速排序

快速排序的描述 與歸併排序一樣,快速排序也使用了分治思想。具體步驟 分解 陣列 a p.r 被劃分為兩個子陣列 可能為空 a p.q 1 和 a q 1.r 使得 a p.q 1 中的每乙個元素都小於等於 a q 而 a q 小於等於 a q 1.r 中的每個元素。解決 通過遞迴呼叫快速排序,對子陣...

演算法導論 第七章《快速排序》

本章介紹了快速排序及其演算法分析,快速排序採用的是分治演算法思想,對包含n個數的輸入陣列,最壞情況下執行時間為 n 2 但是平均效能相當好,期望的執行時間為 nlgn 另外快速排序能夠就地排序 我理解是不需要引入額外的輔助空間,每次劃分能確定乙個元素的具體位置 在虛擬環境中能很好的工作。快速排序演算...

演算法導論 第七章 快速排序

快速排序通常是實際應用中最好的選擇,因為它的平均效能非常好,它的期望時間複雜度為o nlng 而且隱含的常數因子非常小。另外,它還是原址排序。quicksort a,p,r if p隨著程式的執行,陣列被劃分為4個 小於主元,大於主元,未劃分,主元,可能有空的 區域。對於partition中的第3 ...