给定一个数组,其中负元素个数等于正元素个数(顺序任意)。交换数组中第一个负元素和第一个正元素,然后交换第二个负元素和第二个正元素,依此类推
例如数组 {1, 2, 3, -4, 5, 6, -7, -8, -9, -10},我们把它变成 {-4, -7, -8, 1, -9, -10, 2, 3, 5, 6}
java
public static void main(String[] args) {
int[] a = {1, 2, 3, -4, 5, 6, -7, -8, -9, -10};
System.out.println("now:");
for(int i = 0; i < 10; i++) System.out.printf("%d ", a[i]);
int pos = -1, neg = -1;
while(true) {
while (++pos < 10 && a[pos] < 0) {}
while (++neg < 10 && a[neg] > 0) {}
if (pos >= 10 || neg >= 10) { break; }
int temp = a[pos];
a[pos] = -a[neg];
a[neg] = -temp;
}
System.out.println("");
System.out.println("after:");
for(int i = 0; i < 10; i++) System.out.printf("%d ", -a[i]);
}
得到结果
