使用分割槽演算法並找出主元
對主元兩邊的序列分別進行排序
整體時間複雜度 o(nlog n)
public
class
quicksort
}//分割槽演算法
public
static
intpartition
(int
a,int l,
int r)
else
if(a[l]
> a[mid]
&& a[l]
< a[r]
)else
if(a[r]
> a[mid]
&& a[r]
< a[l]
)else
if(a[r]
< a[mid]
&& a[r]
> a[l]
)else midvalueindex = mid;
swap
(a,l,midvalueindex)
;//分割槽
int pivot = a[l]
;//主元
int lp = l+1;
//左指標
int rp = r;
//右指標
while
(lp <= rp)
swap
(a,l,rp)
;//此時,右指標指向主元
return rp;
}public
static
void
swap
(int
a,int i,
int j)
}
《經典排序演算法 快速排序》
快速排序是實踐中已知的最快的排序演算法,平均執行時間o nlogn 該演算法之所以快是因為非常精煉和高度優化的內部迴圈。它也是一種分治的遞迴演算法,將陣列s排序的基本演算法由下列簡單的四步組成 如果s中元素個數是0或1,則返回。取s中任一元素v,稱之為樞紐元。將s 分成兩個不相交的集合s1 x v ...
經典演算法 快速排序
題目說明 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實...
經典排序演算法 氣泡排序 快速排序
氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素 浮 到頂端,最終達到完全有序。特點 如果n個元素按照從小到大排序,每一輪 i 排序後,最大的元素會放到最後,後續新一輪只需要前n i個元素互相比較。題目 給出無需陣列 4,3,1,2 要求按照從小到...