快速排序小結

2021-05-17 20:31:21 字數 745 閱讀 7118

快速排序

(1)基本思想

在待排序的陣列的

n 個元素中取乙個元素

(一般取第乙個

),將其移動到這樣的位置:在其之前的元素的值都小於它,在其之後的元素都大於它,這樣是一趟快速排序;

然後對陣列的兩個部分進行同樣的操作,直到每部分只有乙個記錄為止;

總之,每趟使表的第乙個元素放在適當位置,將表兩分,再對兩子表進行同樣的遞迴劃分,直至劃分的子表長度為1!

(2)**: //

返回基準位置

intdevide_array(int data,int low,int high)

} swap(data[low],data[last_small]);

return last_small; }

void

quick_sort(int *data,int left,int right)

} (3)小結

(快速排序效能

)最好時間

o(nlogn)

平均時間

o(nlogn)

最壞時間

o(n^2)

穩定性--

不穩定

解釋:在所有同數量級

(o(nlogn))

的排序方法中,快速排序被認為是平均效能最好的一種;

但是,若初始記錄序列按關鍵字逆序或基本有逆序時,快速排序則蛻化為氣泡排序,此時,演算法的時間複雜度為

o(n^2)

快速排序學習小結

快速排序是排序演算法中平均時間複雜度為o nlogn 的一種演算法 問題 對乙個序列a 1 a 2 a n 調整序列中元素的位置,使得a 1 原序列的a 1 下同 的左側所有元素都不超過a 1 右側所有元素都大於a 1 例如對序列來說,可以調整序列中元素的位置,形成序列 思想 two pointer...

排序演算法整理小結(快速排序)

說到快速排序演算法,可能我們會了解到其最壞的執行時間為o n n 但是對於其平均效能為o nlgn 正是這一點使得其被廣泛的使用,另乙個重要的特點就是,其能夠進行原地排序,能夠盡可能的減少空間的占用,盡可能的減小演算法使用的空間。說了這麼多理由,那麼到底是怎麼一回事,或者到底是怎麼樣的呢?其核心部分...

遞迴 快速排序 快速排序

問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...