C語言資料結構與演算法 快速排序

2021-10-03 16:36:33 字數 1682 閱讀 3184

基本思想:

該方法太浪費空間,需要許多空間

改進如下:只需要乙個額外的位置

依此將後續的值與所選界點進行比較

比界點大的不移動(low++或high–),比界點小的移動到前面

前面有空,從後面移動乙個比界點大的;

後面有空,從前面移動乙個比界點小的。

當low = high 時不用繼續了,並將 0 號位置的中心點放到該位置上

此時被分成了兩個子表,分別繼續重複操作

**實現

此**又對上述進行優化,沒有乙個空位置,直接將兩個值與基準數(界點)比較

//從大到小排序

void

quicksort

(int b,

int* pcount,

int left,

int right)

temp = b[left]

;//temp中存的就是基準數

i = left;

j = right;

while

(i != j)

while

(b[i]

>= temp && i < j)

//再找左邊的

if(i < j)

//交換兩個數在陣列中的位置

}//最終將基準數歸位

b[left]

= b[i]

; b[i]

= temp;

quicksort

(b, pcount, left, i -1)

;//繼續處理左邊的,這裡是乙個遞迴的過程

quicksort

(b, pcount, i +

1, right)

;//繼續處理右邊的 ,這裡是乙個遞迴的過程

}int

main()

;int count =0;

int i;

int n =10;

quicksort

(a,&count,

0, n -1)

;//快速排序呼叫

//輸出排序後的結果

for(i =

0; i < n; i++

)printf

("\n一共交換了%d次\n"

, count)

;return0;

}

資料結構與演算法 排序演算法 快速排序

源 cpp view plain copy include void quicksort int int,int intfindposs int int,int intmain quicksort arry,0,6 printf after sorted n for i 0 i 7 i printf...

資料結構與演算法 快速排序

基礎概念 快速排序,聽這個名字就能想到它排序速度比較快方法,是一種分治思想。所謂分治,就是指以乙個數為基準,將序列中的其他數往它兩邊 扔 以從小到大排序為例,比它小的都 扔 到它的左邊,比它大的都 扔 到它的右邊,然後左右兩邊再分別重複這個操作,不停地分,直至分到每乙個分割槽的基準數的左邊或者右邊都...

資料結構與演算法 快速排序

快速排序在實際應用中使用廣泛,效果也高。快排使用的是分治策略,一組序列基於某乙個基準值分成兩個大小的子串行,遞迴排序子串行,最終得到有序的序列。快排的平均時間複雜度為o nlogn 演算法的實現步驟 1.在序列中挑選乙個基準值,我們可以預設第乙個數為基準值 2.從兩邊的數值跟基準值作對比,數值小的放...