交換排序之快速排序

2021-06-16 08:38:30 字數 639 閱讀 8156

1.基本思想

假設要排序的陣列是array[0]……array[n-1],首先任意選取乙個資料(通常選用第乙個資料)作為關鍵資料,然後將所有比它的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。一趟快速排序的演算法是: 

1)、設定兩個變數i、j,排序開始的時候i = 0,j = n-1; 

2)以第乙個陣列元素作為關鍵資料,賦值給_temp,即_temp = array[i]; 

3)、從j開始向前搜尋,即由後開始向前搜尋(j=j-1),找到第乙個小於_temp的值,兩者交換; 

4)、從i開始向後搜尋,即由前開始向後搜尋(i = i+1),找到第乙個大於_temp的值,兩者交換; 

5)、重複第3、4步,直到i=j; 

2.演算法

1.一次劃分演算法具體如下:

int quicksort(type *array, int low ,int high)

}

演算法分析快速排序的記錄移動次數不大於比較的次數,快速排序的最壞時間複雜度應為o(n*n),最好時間複雜度為o(nlogn);快速排序是一種不穩定的排序方法。

交換排序之快速排序

問題及 檔名稱 main.cpp 作 者 徐群壯 完成日期 2015.12.15 版 本 號 v1.0 問題描述 資料結構例程 交換排序之快速排序 輸入描述 程式輸出 1.以第1個元素作為基準 include define maxsize 20 typedef int keytype 定義關鍵字型別...

交換排序之快速排序

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

交換排序之快速排序

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