import java.util.*;
//数组的partition调整
public class ModifyArr{
//问题一
public static int[]GetModifyArr(int[]arr)
{
if(arr==null)
{
return null;
}
int u=0; //u[0...u]
int i=1; //arr[u+1...i]
while(i!=arr.length)
{
if(arr[i++]!=arr[u]) //后面一个数与前面的数对比
{
swap(arr,++u,i-1);
}
}
return arr;
}
//交换两个数
public static void swap(int[]arr,int i,int j)
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
//问题二
public static int[]arr2(int[]arr)
{
if(arr==null)
{
return null;
}
Arrays.sort(arr);
return arr;
}
public static int[]arr3(int[]arr)
{
if(arr==null)
{
return null;
}
int index=0;
int left=-1;
int right=arr.length;
while(index<right)
{
if(arr[index]==0)
{
swap(arr,++left,index++);
}else if(arr[index]==2)
{
swap(arr,--right,index);
}else{
index++;
}
}
return arr;
}
//打印数组的内容
public static void PrintArr(int[]arr)
{
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[]args)
{
//System.out.println("Hello");
int[]arr={1,2,2,2,3,3,4,5,6,6,7,7,8,8,8,9};
PrintArr(GetModifyArr(arr));
int[]arr2={0,1,2,1,0,2,1,2,1,0,2,1};
PrintArr(arr2(arr2));
PrintArr(arr3(arr2));
}
}
数组的partition调整
最新推荐文章于 2020-10-21 13:47:14 发布