markdown
#說明
前面有氣泡排序法,這邊有個更快速的排序演算法。
先將資料分成兩部分 記憶中間值
一邊由頭開始 一邊由尾開始
從開頭是搜尋的 如果比中間值大 就停下來
從尾開始搜尋的 如果比中間值小 就停下來
接著將這兩數交換
一直換到換到無法換
在分別一開始 分成兩半的 裡面也重複上述做法
直到資料完成排序
#操作流程
##Code
參考:https://blog.johnsonlu.org/datastructurequick-sort%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E6%B3%95/
```
package QS;
public class quicksort{
static int [] num = {10,6,11};
public static void main(String [] argv){
quick_sort();
for(int i : num){
System.out.print(i + " ");
}
}
//Quick Sort Start
public static void quick_sort(){
sort(0,num.length-1);
}
//Recursion
public static void sort(int left, int right){
//確定是否可以排序
if(left < right){
int i = left;
int j = right + 1;
while(true){
//向右找,直到找到比基準點大的
while(i + 1 < num.length && num[++i] < num[left]);
//向左找,直到找到比基準點小的
while(j - 1 >= 0 && num[--j] > num[left]);
if(i >= j) break;
swap(i,j);
}
//基準點與j交換(這時候的j已經跑到比基準點小的數了)
swap(left,j);
//遞迴排序基準點左半邊
sort(left, j - 1);
//遞迴排序基準點右半邊
sort(j + 1 , right);
}
}
//交換
public static void swap(int i, int j){
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
```
##Demo
- code
留言
張貼留言