一、簡介
快速排序是c.r.a.hoare於2023年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法(divide-and-conquermethod),時間複雜度為o(n*logn),不穩定。
基本思想是:
1)先從數列中取乙個數作為基準數
2)進行分割槽,把把大於基準數的所有數放在它的右邊,小於或等於它的數放在它的左邊
3)重複步驟2,直到所有分割槽都只有乙個數
二、具體實現步驟
1)舉乙個簡單的例子,以陣列為例,索引0~4,待排資料為4 5 3 1 2,取區間第乙個數為基準數,此時i = 0; j = 4, x = a[i] = 4
2)這時a[0]已經空出來,需找數來填,先從後向前找第乙個小於或等於4的數填到a[0],那麼a[0] = a[4] = 2,i = i + 1 = 1
這時a[4]又空出來,再從前向後找第乙個大於4的數填到a[4],那麼a[4] = a[1] = 5,j = j - 1 = 3
然後又從後向前找第二個小於或等於4的數填到前面的坑
交替又從前向後找第二個大於4的數填到前面的坑
直到i = j,將x填到a[i]中,即a[i] = x
那麼此時的結果如下,就劃分出兩個區間,4左邊的數都小於或等於它,右邊的數都大於它
3)重複步驟2),左邊區間和右邊區間繼續劃分,分別遞迴呼叫,直到每個小區間都只有乙個數,那麼就完成了排序
三、**
1.遞迴
四、參考資料
排序1 快速排序演算法
經典快排思路 1.首先設定乙個分界值,通過該分界值將陣列分為左右兩個部分。2.左邊部分是小於等於分界值的資料,右邊部分是大於分界值的資料。3.左邊和右邊遞迴呼叫方法 設定分界值,劃分左邊的是小於等於分界值的資料,右邊是大於分界值的資料。舉例 4,6,2,0,3 1.選取最右邊的3作為分界值,劃分後陣...
排序演算法1 快速排序
今兒閒著,實現了下一維陣列快速排序演算法。快速排序分三個步驟 參考維基百科 1.選取乙個基準值。一般以第乙個為基準 2.重新排序,所有比基準小的都放在左邊,所有比基準大的都放在右邊。排序過後,該基準處於數列中間位置。分治法中的分,以基準值為中心,分為左右兩個分割槽 3.遞迴的按照1 2兩步驟排序左右...
快速排序演算法1
package com.mianshi describe 快速排序演算法1 排序結果從小到大 create on 2011 05 25 author sylor.liu version 1.0 since jdk1.6 public class quicksort1 以a r 為基準值,將該段資料拆...