交換排序之快速排序

2021-07-08 22:38:07 字數 1039 閱讀 8623

問題及**:

/*

*檔名稱:main.cpp

*作 者:徐群壯

*完成日期:2015.12.15

*版 本 號:v1.0

* *問題描述:

資料結構例程—— 交換排序之快速排序

*輸入描述:

*程式輸出:

*/

1.以第1個元素作為基準:

#include #define maxsize 20

typedef int keytype; //定義關鍵字型別

typedef char infotype[10];

typedef struct //記錄型別

rectype; //排序的記錄型別定義

void quicksort(rectype r,int s,int t) //對r[s]至r[t]的元素進行快速排序

rectype; //排序的記錄型別定義

void quicksort1(rectype r,int s,int t) //對r[s]至r[t]的元素進行快速排序

{ int i=s,j=t;

keytype pivot;

rectype tmp;

pivot = r[(s+t)/2].key; //用區間的中間位置的元素作為關鍵字

if (si && r[j].key>pivot)

j--; //從右向左掃瞄,找第1個小於基準的r[j]

知識點總結及學習心得:

快速排序這種方法在我理解起來的時候有點難,後來懂了,就是先找到乙個基準tmp,在排序的過程中,比它小的排在前面,比它大的排在後面,從而給tmp找到合適的位置。然後類似的過程交替下去就好了。快速排序的速度比較快,但是不穩定。

交換排序之快速排序

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

交換排序之快速排序

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

交換排序之快速排序

基本思想 快速排序使用分治的思想,通過一趟排序將待排序列分割成兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小。之後分別對這兩部分記錄繼續進行排序,以達到整個序列有序的目的。舉例來說 數列 5,2,4,9,3,8,7,1,6,0 選乙個基準,此處以第一位5位基準,然後將5與各個數相比較,比5...