快速排序其實是氣泡排序的公升級版,都具有交換排序的思想。
快速排序通過一遍排序,將資料分為兩部分,一部分資料都比另外一部分資料小,然後再分別對這兩部分資料再進行此排序,直到排序結束。因此,此排序方法用到了遞迴。
下面來舉個例子:(對69 65 90 37 92 6 28 54 八個數進行排序)
69 65 90 37 92 6 28 54 //以陣列的第乙個元素為基準base
54 65 90 37 92 6 28 69 //從陣列右側開始,取出資料依次與base進行比較,直到找到小於base的數,然後兩者進行交換
54 65 69 37 92 6 28 90 //從陣列左側開始,取出資料依次與base進行比較,直到找到大於base的數,然後兩者進行交換
54 65 28 37 92 6 69 90 //從右側開始,操作與上述相同
54 65 28 37 69 6 92 90 //從左側開始,操作與上述相同
54 65 28 37 6 69 92 90 //到此步驟,base左邊的數都比base小,base右邊的數都比base大
然後再通過遞迴,將base左右兩邊的數繼續按此方法排序,直到排序結束。
#include #define arraylen 10 //比較十個數
int division(int a,int left,int right); //宣告分割函式,返回基準的序號值
void quicksort(int a,int left,int right); //宣告快排函式
int main()
a[left]=base; //儲存基準數
return left; //返回基準序號
}void quicksort(int a,int left, int right)
}
關於排序(快速排序)
package com.sw.demo.test 關於快速排序 author song public class testquicksort quicksort arr,0,arr.length 1 快速排序 for int i 0 i arr.length i 快速排序 param arr par...
關於快速排序
int quicksort int array,int left,int right if left j quicksort array,left,j if i right quicksort array,i,right return 0 注意快速排序是通過遞迴完成的,也就不難理解其運用的思想主要是...
排序總結 快速排序
思想 從陣列中選取乙個數作為基準值,按照從大到小排序小於基準值的放在基準值的左邊,大於基準值的在基準值的右邊 核心partition過程 選取陣列第乙個元素作為基準值,小於區 left 1,j 1 大於等於區 j,i 1 讓變數i從left 1位置開始遍歷陣列,j變數位置是小於區間的而最後乙個數,若...