我在C中實現了快速排序實現,我試圖找出需要輸入什麼樣的輸入來導致更差的情況下性能。試圖導致「更壞的情況」快速排序
根據wikipedia:
總是選擇在分區作爲樞軸的最後一個元素在上已排序的列表,或相同的元素的列表性能差(N^2)這樣的結果。
所以我試圖做到這一點,導致the following code。數據透視始終是最後一個元素,輸入是已經排序的列表。爲了證明覆雜度確實是n^2,我創建了一個全局變量,我在每次迭代中遞增,然後最終打印出來。
我預計該程序將打印:
Done in 64 iterations
然而,這樣做是在28次迭代。也許我對「複雜性」這個詞的理解是錯誤的?
n *(n-1)/ 2 = 8 * 7/2 = 28'。 'n *(n-1)/ 2'仍然是O(n^2)。 – nneonneo
@darwish英俊的頭像;) –
採取更大的輸入(如10^5元素),你會立即知道它是O(n^2)。 –