常見排序演算法之快速排序

2021-08-04 01:46:24 字數 1362 閱讀 1668

快速排序是一種分割槽交換排序,是目前已知實測最快的一種排序演算法.

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 當中樞元素在低指標時,從高指標開始向前查詢...