快速排序 詳解

2021-08-28 16:54:56 字數 814 閱讀 4741

注:如果下面不詳細,可以去這個連線看我記錄下的筆記:

概念:快速排序其實是「二分」的應用。雖然類似於冒泡,但是它比冒泡的跳躍更大。

樣例:int arr[10]=;

第一步:確定arr[0]為基準數。

第二步:先從最右邊(arr[9])開始讀取數字,讀到比基準數小的時候。再從基準數開始讀取。讀到比基準數大的時候,交換此時的數字。 

1,4,2,5,6,7,8,10,9,3;(會發現讀到arr[0],還沒有找到,所以基準數為最小)

第三步:從最開始確定的基準數把陣列分為左右兩部分。然後分別進行第二步。直到排序完成。

因為樣例選擇問題,沒有左邊部分,只有右邊的(4,2,5,6,7,8,10,9,3);

選擇4為基準數,如何進行上述的第二步操作:(1,  3,2,4,6,7,8,10,9,5);

重複第三步:(1),(3,2),(4),(6,7,8,10,9,5);1,4是排序好的

然後重複就好。

**:#include

using namespace std;

int arr[10]=;

void quicksort(int left,int right)

int temp=arr[left];

int i=left;

int j=right;

while(i!=j)

{while(arr[j]>=temp&&i

int main() {

quicksort(0,9);

for(int i=0;i<10;++i)

{cout《快排的主要思想就是二分。所以用遞迴是最好的選擇。

快速排序詳解

快速排序也是基於交換的原理進行的,是對氣泡排序的一種改進。即它是通過不斷比較和移動交換來實現排序的,只不過它的實現,增大了記錄的比較和移動的距離,將關鍵字比較大的記錄從前面直接移動到後面,關鍵字較小的記錄從後面直接移動到前面,從而減小了總的比較次數和移動次數。快速排序是找出乙個元素 理論上可以隨便找...

快速排序詳解

對於陣列s 2,1,3,0,4,5,8,7,1 進行排序 最好的情況是val每一次取到中間值,則複雜度為nlog n 最壞的情況是val每一次取到最小值或者最大值,則複雜度為n 2 include include include include include include include inc...

快速排序詳解

快速排序法詳解 快速排序法 quicksort 是一種非常快的對比排序方法。它也divide and conquer思想的實現之一。自從其產生以來,快速排序理論得到了極大的改進,然而在實際中卻十分難以程式設計出正確健壯的 本文將對快速排序演算法的基本理論和程式設計實踐方面做作乙個全面的講解。在本文講...