数组中的数字按某值划分为左边小、中间相等、右边大的形式
作者:互联网
题目:给一个数组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; } }
图解:
标签:index,右边,int,arr,某值,arrPartition,数组,public 来源: https://www.cnblogs.com/zh-xiaoyuan/p/15127772.html