交換排序之快速排序

2021-10-02 04:58:53 字數 1261 閱讀 8117

基本思想:快速排序使用分治的思想,通過一趟排序將待排序列分割成兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小。之後分別對這兩部分記錄繼續進行排序,以達到整個序列有序的目的。舉例來說:

數列:5,2,4,9,3,8,7,1,6,0

①選乙個基準,此處以第一位5位基準,然後將5與各個數相比較,比5大的數放在5的右邊(注意,此時右邊的數並不是一組有序的數,僅僅比5大而已),比5小的數放在5的左邊(與上相似)

②使用遞迴演算法,將5左邊的數與右邊的數分別單獨看成一組新的數列,再執行①的步驟思想;直至結束。

我的排序思想便是如此,但具體的執行,還需考慮:

根據①的思想衍生出**思路,先從右邊遍歷,再從左邊遍歷,即**中的while迴圈。再根據②的思想分割數列遞迴運算,直到排序完成。

**如下:

#include

#include

#include

/*快速排序*/

void

quicksort

(int

*ttr,

int left,

int right)

temp = ttr[left]

;//先記錄下 基準數,以便最後歸位

i = left;

j = right;

while

(i!=j)

while

(ttr[i]

<= temp && i//從左向右依次查詢

if(i < j)

//如果符合條件,交換兩數的位置,

} ttr[left]

= ttr[i]

; ttr[i]

= temp;

quicksort

(ttr,left,i-1)

;quicksort

(ttr,i+

1,right);}

//測試函式

intmain()

;int integer,i;

integer =

sizeof

(str1)

/sizeof

(int);

quicksort

(str1,

0,integer-1)

;for

(i =

0;i < integer;i++

)printf

("\n");

system

("pause");

return0;

}

交換排序之快速排序

1.基本思想 假設要排序的陣列是array 0 array n 1 首先任意選取乙個資料 通常選用第乙個資料 作為關鍵資料,然後將所有比它的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候i 0,j n 1 2 以第...

交換排序之快速排序

問題及 檔名稱 main.cpp 作 者 徐群壯 完成日期 2015.12.15 版 本 號 v1.0 問題描述 資料結構例程 交換排序之快速排序 輸入描述 程式輸出 1.以第1個元素作為基準 include define maxsize 20 typedef int keytype 定義關鍵字型別...

交換排序之快速排序

快速排序的基本思路是選取乙個基準數,然後將小於基準數的移到基準數左邊,反之在右邊,稱為一趟快速排序。然後以基準數分為左右兩組,分別快速排序,如此遞迴,完成最終排序。一般基準數選取第乙個資料,接下來重點在於一趟排序中如何移動資料。如資料data data 0 4為基準,將4搬出,則data 0 乙個空...