交換排序 2 快速排序

2021-06-23 06:10:23 字數 1522 閱讀 3591

快速排序:

快速排序的基本演算法思想是;

設待排序的元素序列個數為

n,存放在陣列

a中,令第乙個元素為樞軸元素,即將

a[0]

作為參考元素,令

pivot=a[0].

初始時,令

i=0;j=a.legth-1;

然後按以下方法操作

:(1).從序列的

j位置往前,依次將陣列的中的元素與樞軸元素相比較,如果當前元素大於等於樞軸元素,則將前乙個元素與樞軸元素相比較,否則將當前元素移動到位置

i,即比較

a[j]

與pivot,

如果a[j]>=pivot,

則連續執行

j--操作,直到找到乙個元素,使

a[j]則將

a[j]

移動到a[i]

中,並執行一次

i++;

(2).從序列的

i位置開始,一次將元素值與樞軸元素相比較。如果當前元素小於樞軸元素,則將後乙個元素與樞軸元素相比較,否則,將當前元素移動的位置

j,即比較

a[i]

與pivot,

如果a[i]則連續執行

i++,

直到遇到乙個元素使

a[i]>=pivot,

將a[i]

移動到a[j]

中,並執行一次

j--;

(3).迴圈執行步驟

1,2,直到出現

i>=j,

將元素pivot

移動到a[j]

中,此時整個元素序列被位置

j劃分為兩個部分,前一部分元素的值都小於樞軸,後一部分元素的值都大於樞軸。即完成看一次快速排序。

實現**:(c#實現)

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace kuaisupaixu

;//待排序陣列

快速排序是一種不穩定的排序演算法,時間複雜度為o(nlog2n)(n倍的log2底n)。

10 3交換排序(2)快速排序

快速排序也是乙個典型的分治思想 divide and conquer 的運用。對於分治法需要了解如下的乙個流程 1.將當前的大問題分解成若干個子問題 2.解決每乙個子問題 3.合併子問題的解 對於運用到陣列的排序來說,很顯然可以將陣列一分為二,分別將其左右排序完成後,再對整個陣列進行排序。上面描述的...

交換排序 快速排序

快速排序 quick sort 也是一種交換排序,它在排序中採取了分治策略。從待排序列中選取一元素作為軸值 也叫主元 將序列中的剩餘元素以該軸值為基準,分為左右兩部分。左部分元素不大於軸值,右部分元素不小於軸值。軸值最終位於兩部分的分割處。對左右兩部分重複進行這樣的分割,直至無可分割。從快速排序的演...

交換排序 快速排序

簡述 快速排序可以說算是針對氣泡排序的一種優化,氣泡排序是順序交換,這樣交換次數順序增長。如果我們做跳躍的交換,那麼可以使得交換次數也是跳躍性,會有所降低 演算法思想 找出乙個樞軸,用於做比較交換,並記下後用。一般用第乙個 用第 一 中間 最後三個取中後來效果會更好 定乙個高位 high和底位 lo...