快速排序及C 實現

2021-09-11 23:13:55 字數 748 閱讀 9618

1.挑選乙個基準值

2.小於基準值的數放在大於基準值的數的左邊

3.將基準值放入中間,即兩種數分界的地方,根據挑選的基準值決定如何插入。

4.此時,基準值左邊的區間小於等於基準值,基準值小於等於右邊的區間,這三段有序,但內部無序,所以,將基準值左右兩端繼續進行快速排序,直到區間長度為1。是乙個遞迴的過程。

void quick_sort(int arr,int left,int right)

int i,j,temp;

i=left;

j=right;

temp=arr[left];//排序用的基準值,可自選

//比基準值大的放在右邊,小的放在左邊。

//可自選方法進行實現,最後結果要求比基準值小的在左邊,比基準值大的在右邊。

while(i!=j)

while(arr[i]<=temp && iif(i}

//i左邊的值都小於等於基準值,右邊都大於基準值

//進行過交換的地方一定滿足,所以迴圈終止情況只有i和j兩者相遇

//且在這種方法中,終止的位置一定是滿足小於等於,不一定滿足大於,因為是先從右往左進行查詢

swap(arr[left],a[i]);

//基準值左邊小於等於基準值,右邊大於等於基準值,繼續將左右區間進行快排。

quick_sort(arr,left,i-1);

quick_sort(arr,i+1,right);

}

快速排序及c 實現

乙個暑假的閒暇,玩的是舒服了,可是腦子裡的各種演算法卻忘了,果然程式設計是個靠保持狀態的活,昨天覆習了便快排,拿出來寫個部落格加深個印象。簡介 快排是基於分治模式的,它的平均時間複雜度為o nlgn 最壞複雜度是o n n 思想 快排的其基本思想是,陣列中先隨機找個主元 pivot element ...

快速排序原理及C 實現

原理 快速排序,說白了就是給基準資料找其正確索引位置的過程.如下圖所示,假設最開始的基準資料為陣列第乙個元素23,則首先用乙個臨時變數去儲存基準資料,即tmp 23 然後分別從陣列的兩端掃瞄陣列,設兩個指示標誌 low指向起始位置,high指向末尾.首先從後半部分開始,如果掃瞄到的值大於基準資料就讓...

快速排序思想及C 實現

ste p1.step 1.step1.通過一趟排序把資料分成兩部分,其 中 color 其中一部分的所有資料都要比另一部分的所有資料小,基準資料 稱為樞軸 排在這兩個子串行的中間 s te p2.step 2.step2.對這兩個子串行遞 歸 color 遞迴地呼叫排序演算法 int partit...