题目
假设有一个数组 A ,int[] A = { 1 , 3 , -1 ,0 , 2 , 1 , -4 , 2 , 0 ,1 ... N}; 原来是需要查出大于0的数组,但是由于传参错误或者其他原因,导致查出0和负数了,现在要求在不使用新数组和新集合的情况下(即只使用这个A数组,因数组数据比较大,且只能用一次循环) 实现正数放到数组的前面,小于等于0的数放到数组的末尾
实现
public class Main {
public static void main(String[] args) {
int[] nums = { 1 , 3 , -1 ,0 , 2 , 1 , -4 , 2 , 0 ,1 ,0};
System.out.println(Arrays.toString(sort(nums)));
}
private static int[] sort(int[] nums) {
int r=nums.length-1;
for (int i = 0, len = nums.length; i < len; i++) {
if(r==i) {
break;
}
if(nums[i]<=0) {
int temp=nums[r];
nums[r]=nums[i];
nums[i]=temp;
r--;
i--;
}
}
return nums;
}
}