快速排序-java
為了解決凸包問題,儘量降低時間複雜度,寫了一個快速排序演算法。
此快排演算法的主要過程是:
1.選擇陣列第一個數作為基準X
2.從右往左找第一個比X小的數,放到X所在的位置,留出一個空
3.從左往右找第一個比X大的數,放在剛才空出的位置,留出一個空
4.從右往左找第二個比X小的數,放到上一個空位置,再次留出一個空
5.如此迴圈,直到左右相遇,把X放在最後一個空位
6.此時,X左邊都是比X小,右邊都比X大,對左右兩邊分別遞迴計算。
注意: 此演算法遞迴,陣列要大於3;一定要指定遞迴退出的條件。
public class QuickSort {
public void qs(int[] a,int c,int b){
int x=a[c];
int i=c;
int j=b;
if(c<b){ //此處為遞迴的退出條件
while(i<j){
while(i<j&&x<a[j]){ //從右往左找比基準大得數
j--;
}
a[i]=a[j];
while(i<j&&x>=a[i]){
i++;
}
a[j]=a[i];
}
a[i]=x;
qs(a,c,i-1);
qs(a,i+1,b);
}
}
}
相關文章
- java 快速排序Java排序
- java實現快速排序Java排序
- 快速排序(java實現)排序Java
- 快速排序 java實現排序Java
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 排序之快速排序排序
- 排序:氣泡排序&快速排序排序
- Java不用遞迴的迭代快速排序示例Java遞迴排序
- 隨機快速排序Java程式碼實現隨機排序Java
- 快速排序排序
- 快速排序&&歸併排序排序
- JAVA將快速將列表分組並排序鍵Java排序
- 快速排序快速入門排序
- 排序演算法__快速排序排序演算法
- 排序演算法:快速排序排序演算法
- 選擇排序和快速排序排序
- 四、歸併排序 && 快速排序排序
- 排序演算法 - 快速排序排序演算法
- javascript 快速排序JavaScript排序
- 快速排序javaScript排序JavaScript
- js 快速排序JS排序
- LeetCode:快速排序LeetCode排序
- 快速排序法排序
- 分治—快速排序排序
- python 快速排序Python排序
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- 排序演算法之 '快速排序'排序演算法
- 遞迴-*快速排序遞迴排序
- 快速排序 (Quick Sort)排序UI
- 快速排序C++排序C++
- 三種快速排序排序
- 8.22_快速排序排序
- 簡單快速排序排序
- 圖解快速排序圖解排序
- 三種語言實現快速排序(C++/Python/Java)排序C++PythonJava
- 堆排序和快速排序效能比較排序