陣列中的數字按某值劃分為左邊小、中間相等、右邊大的形式
阿新 • • 發佈:2021-08-11
題目:給一個數組arr=[2,7,9,3,1,8,5,2,5] 給定數字5,把陣列中的數按照<5,=5,>5進行排列 --->arr=[2,2,3,1, 5,5, 8,9,7]
程式碼:
package Algorithms; /** * @author : zhang * @version : 1.0 * @date : Create in 2021/8/11 * @description : */ public class Arr_SmallerEqualBigger { public static void main(String[] args) {int[] arr = { 2,7,9,3,1,8,5,2,5}; arrPartition(arr,4); //2 2 1 3 8 5 9 5 7 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } public static void arrPartition(int[] arr,int pivot){ int small =0; //記錄 <pivot部分的後一個數的下標)int big = arr.length-1; //記錄 >pivot部分的前一個下標 int index = 0; //控制陣列下標前移 while(index!= big){ if(arr[index]<pivot){ swap(arr,small++,index++); }else if(arr[index]==pivot){ index++; }else{ swap(arr,big--,index); } } } public static void swap(int[] arr,int a,int b){ int temp = arr[a]; arr[a]=arr[b]; arr[b]=temp; } }
圖解: