快速排序(Quick Sort)的C語言實現

2022-09-11 19:00:19 字數 1504 閱讀 8109

快速排序(quick sort)的基本思想是通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對著兩部分記錄繼續進行排序,以達到整個序列有序,具體步驟為

設立樞軸,將比樞軸小的記錄移到低端,比樞軸大的記錄移到高階,直到low=high停止

分別對樞軸低高階部分再次快速排序(即重複第1步)

重複第1、2步,直到low=high停止

c語言實現(編譯器dev-c++5.4.0,源**字尾.cpp)

1 #include 2 #include 3

#define maxsize 6

4#define ok 1

5#define error 0

67 typedef int

status;

8 typedef int

keytype;

9 typedef char infotype;//

要malloc()

1011 typedef struct

redtype;//

記錄型別

1516 typedef struct

sqlist;

20/*

21name: 初始化

2223

author: leo

24date: 10-12-15 16:54

25description: 初始化順序表

26*/

2728 status initsqlist(sqlist &l)

3839

return

ok;40}41

/*42

name: 部分排序

4344author: 鋼鐵俠

45date: 10-12-15 17:00

46description: 反覆按照樞軸進行快速排序:將比樞軸大的放在一邊,比樞軸小的放在另一邊

47*/

4849

int partition(sqlist &l,int low,int

high)

57 l.r[high]=l.r[low];58}

59 l.r[low]=l.r[0

];60

return

low;61}

6263

/*64

name: 啟動遞迴快速排序

6566author: 鋼鐵俠

67date: 11-12-15 14:37

68description: 啟動遞迴快速排序,並進行第乙個大部分(所有記錄)的快速排序

69*/

7071 status quicksort(sqlist &l,int low,int

high)

78return

ok;79}80

81 status tr**erse(sqlist &l)

86}

8788

intmain()

C 快速排序 QuickSort

快速排序通過將資料分割為兩部分 一部分比另一部分的所有數都小的方法來進行快速排序,low high為左右軸 執行時會移動兩個軸與假定關鍵字之間進行比較 下面有兩種快速排序算 法的 寫法,第一種如果陣列中有相同的數會出現死迴圈 第二種則不會有這種情況 只作參考1.public static void ...

c語言快速排序quicksort

原理 每次定乙個基準,將陣列裡的所有數按照大小排列,比基準小的在左邊,比基準大的在右邊,再通過向左遞迴,向右遞迴即可完成快速排序。原理可參考 include include include include using namespace std vector int a void quicksort...

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...