問題及**:
/*
*檔名稱: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...