經典排序演算法 快速排序

2021-09-19 08:49:04 字數 847 閱讀 4777

使用分割槽演算法並找出主元

對主元兩邊的序列分別進行排序

整體時間複雜度 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 要求按照從小到...