1. 程式人生 > 其它 >陣列中的數字按某值劃分為左邊小、中間相等、右邊大的形式

陣列中的數字按某值劃分為左邊小、中間相等、右邊大的形式

題目:給一個數組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; } }

圖解: