演算法1 快速排序

2021-08-16 19:15:47 字數 789 閱讀 1976

1.快速排序採用分治的思想。

陣列a[p...r]被劃分為兩個(可能為空)的子陣列,a[p..q-1], a[q+1...r]。第乙個陣列中元素小於a[p],第二個陣列中元素大於a[p]。

解決:首先找出p的位置,然後通過遞迴呼叫快速排序,對兩個子陣列進行排序。

步驟:1.確定基準元素a[p];

2.從後往前掃瞄,若遇到小於a[p]的,將此元素賦值給a[low];否則 high--;

3.從前往後掃瞄,若遇到大於a[p]的,將此元素賦值給a[high];否則 low++;

4.當high>low時,迴圈2,3;

5.確定了high的位置,將基準元素a[p]賦值給a[high]。

6.遞迴呼叫, 快速排序a[p...q-1], a[q+1...r];

/快速排序,部分

public static int partion(int array,int low,int high)

array[low]=array[high];

//從前往後掃瞄

while (high>low && array[low]<=temp)

array[high]=array[low];

}//迴圈玩之後,high所指為基準元素所處位置

array[high]=temp;

return high;

}//快速排序,遞迴實現

public static void sort(int array, int low ,int high)

排序1 快速排序演算法

經典快排思路 1.首先設定乙個分界值,通過該分界值將陣列分為左右兩個部分。2.左邊部分是小於等於分界值的資料,右邊部分是大於分界值的資料。3.左邊和右邊遞迴呼叫方法 設定分界值,劃分左邊的是小於等於分界值的資料,右邊是大於分界值的資料。舉例 4,6,2,0,3 1.選取最右邊的3作為分界值,劃分後陣...

排序演算法 1)快速排序

一 簡介 快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 時間複雜度為o n logn 不穩定。基本思想是 1 先從數列中取乙個數作為基準數 2 進行分割槽,把把大於基準數的所有數放在它的...

排序演算法1 快速排序

今兒閒著,實現了下一維陣列快速排序演算法。快速排序分三個步驟 參考維基百科 1.選取乙個基準值。一般以第乙個為基準 2.重新排序,所有比基準小的都放在左邊,所有比基準大的都放在右邊。排序過後,該基準處於數列中間位置。分治法中的分,以基準值為中心,分為左右兩個分割槽 3.遞迴的按照1 2兩步驟排序左右...