榮耀雙 11 首日戰報:榮耀 50 系列獲天貓 2.5-4k 價位段銷量第一
阿新 • • 發佈:2021-11-03
Java快速排序
記得快樂/** * 快速排序 * * @author yl */ public class QuickSort { public static void main(String[] args) { int[] array = {7, 6, 9, 3, 1, 5, 2, 4}; System.out.println(Arrays.toString(quickSort(array,0,array.length-1))); } /** * 快速排序演算法 * 參考:https://blog.csdn.net/morewindows/article/details/6684558、https://blog.csdn.net/shujuelin/article/details/82423852 * @param array * @param left * @param right * @return */ public static int[] quickSort(int[] array,int left,int right) { if (left>right){ return array; } // 將第一個數作為基準數 int baseNum = array[left]; // 左邊數的下標 int leftIndex=left; // 右邊數的下標 int rightIndex=right; while (leftIndex < rightIndex) { // 從右邊開始找第一個小於基準數的數的下標 while (leftIndex < rightIndex && array[rightIndex] >= baseNum) { rightIndex--; } // 從左邊開始找第一個大於基準數的數的下標 while (leftIndex < rightIndex && array[leftIndex] <= baseNum) { leftIndex++; } // 將找到的數左右互換 if (leftIndex<rightIndex){ int temp=array[leftIndex]; array[leftIndex]=array[rightIndex]; array[rightIndex]=temp; } } // 當左邊下標等於右邊下標時,將基準數和該下標對應數互換 array[left]=array[leftIndex]; array[leftIndex]=baseNum; // 遞迴呼叫 quickSort(array,left,rightIndex-1); quickSort(array,rightIndex+1,right); return array; } }