快速排序是一種分割槽交換排序,是目前已知實測最快的一種排序演算法.
6.快速排序
演算法思想
快速排序的基本思想是,通過一趟劃分將陣列或線性表劃為左部,右部,和基準值.其中左部都比基準值小,右部都比基準值大.
(1)在陣列中選擇乙個樞紐元key,一般情況下選取第乙個資料
(2)將所有比key值小的資料移到key值左邊,將大於key值的資料移到key值右邊.
(3)將左部和右部分別遞迴重複第二步,直到所有元素排好序位置
示意圖
**演示
/**
*@param array
* 快速排序
*/public
static
void
quicksort(int array) else
}
快排主體
/**
*@param array
*@param left
*@param right
* 快速排序主體
*/public
static
void
_quicksort(int array,int left ,int right)
}
劃分過程
/**
* @param array
* @param left
* @param right
* @return middle 中樞元下標
* 快排劃分
*/private static int patition(int array, int
left, int
right)
array[left]=array[right];
while(array[left]left
array[right]=array[left];
}array[left]=key;
middle=left;
return middle;
}
演算法效能分析演算法的最好時間複雜度為o(
nlon
g2n)
最壞時間複雜度為o(
n2)
平均時間複雜度為o(
nlon
g2n)
常見排序演算法之快速排序
思想 找乙個記錄,以它的關鍵字作為 樞軸 凡其關鍵字小於樞軸的記錄均移動至該記錄之前,反之,凡關鍵字大於樞軸的記錄均移動至該記錄之後。致使一趟排序之後,記錄的無序序列 r s.t 將分割成兩部分 r s.i 1 和r i 1.t 且 r j key r i key r j key s j i 1 樞...
常見演算法溫習之快速排序
部落格內容中的排序以公升序排列為例 1.演算法理解 快排的基本思想是 1.1 選取pivot 通常不加考慮地可以直接選取序列的第乙個元素作為pivot,但是極端情況下,當原始序列恰好以降序排列時,快排時間複雜度將達到o n 2 比較好的方法是 三數中值分割法 即選取序列的第0個 最後乙個和最中間乙個...
常見演算法之18 快速排序
快速排序基本思想 選定乙個中樞元素,以其為基準點,將小於它的數放在其前面,大於其的數放在後面,把中樞元素放在最終合適的位置。然後再對左右兩邊分別遞迴。快速排序的基本步驟 1 初始時,以第乙個元素作為中樞元素。低指標指向第乙個元素,高指標指向最後乙個元素。2 當中樞元素在低指標時,從高指標開始向前查詢...