java - 交换数组中的元素

标签 java arrays indexing swap

我一直在努力解决这个问题:

假设我有一个数组:

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/

相关文章:

java - C# 无法访问的代码(依赖于属性的数组复制器)

java - 我怎样才能在Java中获得n位数字的最大十进制值?

java - 方法在getDeclaredMethods()中出现,但在getDeclaredMethod()中找不到,为什么?

java - Utils 类中的谓词应该作为常量或静态方法提供?

javascript - 如何从数组对象属性值中删除重复项?

MySQL 子查询的查询性能 - 具有数百万行的表

java - EJB3 或 "Spring3 + hibernate"哪个合适

javascript - 如何使用 Angular 更新具有特定条件的数组值

javascript - 添加或更新数组元素

mysql - MySQL 主键和添加索引时遇到问题(错误#1064)