快速排序的基本思路是選取乙個基準數,然後將小於基準數的移到基準數左邊,反之在右邊,稱為一趟快速排序。然後以基準數分為左右兩組,分別快速排序,如此遞迴,完成最終排序。
一般基準數選取第乙個資料,接下來重點在於一趟排序中如何移動資料。如資料data = ,data[0] = 4為基準,將4搬出,則data[0]乙個空位,設定標誌位i = 0, j = 4。先遞減j,因為右邊的是大於4的,所以找到小於4的移到左邊的空位,然後遞增i找到大於4的移到之前j移動後的空位 如此反覆直到i = j結束。此時i = j肯定是乙個空位 將4移動到這,第一趟結束,接下來遞迴就可以了。
**如下
#include using namespace std;
const int n = 10;
void quicksort(int *data, int left, int right)
int base = data[left];
int i = left;
int j = right;
//迴圈直到i=j
while (i != j)
//如果i> data[i];
}quicksort(data, 0, n - 1);
for (int i = 0; i != n; i++)
}
交換排序之快速排序
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 定義關鍵字型別...
交換排序之快速排序
基本思想 快速排序使用分治的思想,通過一趟排序將待排序列分割成兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小。之後分別對這兩部分記錄繼續進行排序,以達到整個序列有序的目的。舉例來說 數列 5,2,4,9,3,8,7,1,6,0 選乙個基準,此處以第一位5位基準,然後將5與各個數相比較,比5...