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

留言
張貼留言