Java quicksort

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

留言