我一直在努力解决这个问题:
假设我有一个数组:
int[] n = {0, 0, -1, 1, 0, 1, 1, -1, 1};
我需要能够对数组进行排序,如果有一个零前面有一个非零,那么它们应该被交换。
例如:0, 0, -1, 1, 0, 1, 1, -1, 1
将变成:0, 0, -1, 0, 1, 1, 1, -1, 1
我一直在尝试使用 for
循环和 if
语句来完成此操作,但没有成功。有什么建议吗?
最佳答案
试试这个:
for (int i = 1 ; i < n.length ; i++)
if (n[i] == 0 && n[i - 1] != 0) {
int tmp = n[i - 1];
n[i - 1] = n[i];
n[i] = tmp;
}
您的想法是正确的,您需要一个在其主体中包含 if
语句的 for
循环。我们在这里所做的就是从元素 1 开始循环遍历数组。然后我们检查当前所在的元素是否为 0
并且 前一个元素不是 0
:即if (n[i] == 0 && n[i - 1] != 0)
。如果这个条件为真,我们交换这两个元素。
关于java - 交换数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653198/