假设把只包含01的数组(如{0,0,1,1,1,0,1,0,0,1}按照升序排序,可以任意交换两个数的位置,请输出最少需要交换的次数
public static int sum;
public static void main(String[] args) {
int[] arr = {0,0,1,1,1,0,1,0,0,1};
System.out.println("初始数组:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
System.out.println("交换次数:");
System.out.println(sort(arr,0,arr.length-1));
System.out.println("交换结果:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
public static int sort(int[] arr,int l,int r){
int temp;
while (arr[l]==0){
l++;
}
while (arr[r]==1){
r--;
}
if (l<r){
temp = arr[r];
arr[r] = arr[l];
arr[l] = temp;
sum++;
l++;
r++;
sort(arr,l,r);
}
return sum;
}
运行结果
初始数组:
0 0 1 1 1 0 1 0 0 1
交换次数:
3
交换结果:
0 0 0 0 0 1 1 1 1 1