資料結構 快速排序

2022-05-25 04:21:11 字數 1639 閱讀 1344

程式**如下:

1 #include 2 #include 3 #include 4

#define maxsize 20

5 typedef int

keytype;

6 typedef char

infotype;78

//結構體定義

9 typedef struct

redtype;

13 typedef struct

sqlist;

1718

//各個函式定義

19void print(sqlist *l);

20void init(sqlist *l);

21int partition(sqlist *l,int low,int

high);

22void qsort(sqlist *l,int low,int

high);

23void quicksort(sqlist *l);

2425

//初始化,隨機產生待排序的陣列

26void init(sqlist *l)

34 l->length =n;

35 printf("

隨機產生的待排陣列為:");

36print(l);

37 printf("\n"

);38}39

40//

輸出陣列元素

41void print(sqlist *l)

46 printf("\n"

);47}48

49//

進行分趟排序

50int partition(sqlist *l,int low,int high)

58 l->r[low] = l->r[high];

59while(lowr[low].key<=pivotkey)

62 l->r[high] = l->r[low];63}

64 l->r[low] = l->r[0

];65

return

low;66}

67/*

int partition(sqlist *l,int low,int high)

74l->r[0] = l->r[high];

75l->r[high] = l->r[low];

76l->r[low] = l->r[0];

77while(lowr[low].key<=pivotkey)

80l->r[0] = l->r[high];

81l->r[high] = l->r[low];

82l->r[low] = l->r[0];83}

84return low;85}

*/86

8788

//遞迴呼叫 分趟進行排序

89void qsort(sqlist *l,int low,int

high) 96}

9798

//進行快速排序

99void quicksort(sqlist *l)

102103

//主函式

104int

main()

105

資料結構 排序 快速排序

對序列 47,31,83,91,57,18,96,16 進行快速排序 首元素為基準 第二趟排序結果是 正確答案 b 你的答案 c 錯誤 18 31 16 47 57 91 96 83 16 31 18 47 57 91 96 83 16 18 31 47 57 91 96 83 16 18 31 4...

資料結構 排序 快速排序

快速排序在平均情況下是效果最好的排序演算法 每趟子表的排序都是從兩頭向中間交替逼近,接下來舉乙個例子 sorry,上面這個圖的6和5的位置畫反啦,快速排序全域性有序,一趟排序便可以確定基準值的最終位置 類別排序方法 最好時間 最壞時間 平均時間 空間複雜度 穩定性序列特徵 適用於插入排序 直接插入排...

資料結構排序 快速排序

快速排序是對氣泡排序的改進,它的基本思想是通過一趟排序將資料分成兩部分,一部分中的資料都比另一部分中的資料小,再對這兩部分中的資料再排序,直到整個序列有序,如下圖所示。快排的遞迴實現 1 include 2 include 3 4intn 5 6 7 分割使樞軸記錄的左邊元素比右邊元素小8 9int...