gpt4 book ai didi

java - 使用 1 个 for 循环将整数插入数组

转载 作者:行者123 更新时间:2023-11-30 03:15:38 25 4
gpt4 key购买 nike

我正在尝试编写一个方法,它接受一个排序数组和一个整数,并返回一个新的排序数组,其中整数位于正确的位置。

我尝试在不使用动态数组的情况下执行此操作,并且仅使用 1 个 for 循环 - 我使用不同的方法来完成此操作。

方法是这样的:

public static int[] insert(int[] a, int k) {
int j = 0;
int[] s = new int[a.length + 1];
for(int i = 0; i < a.length; i++) {
if(k < a[i] && j == 0) {
s[i] = k;
j++;
} else {
s[i + j] = a[i];
}
}
return s;
}

我的测试输入是

int[] array1 = new int[]{1, 2, 3, 4, 6, 7, 8};

我正在尝试插入 5。

我遇到的这个特定方法的问题是,它总是将插入的整数后面的索引设置为 0。在这种情况下,它将存储和打印

1, 2, 3, 4, 5, 0, 7, 8

而不是

1, 2, 3, 4, 5, 6, 7, 8

谢谢

最佳答案

它并不是将索引设置为零,而是跳过一个索引。当k < a[i]是真的,它正在递增 i (在 for 循环中)和 j (在 j++ 声明中)。所以当你下次做s[i + j] = a[i]时它将跳过两个位置而不是一个。

解决方案是确保在循环的每次迭代中复制原始数组中的值。换句话说,一旦您分配了 ks[i]然后你需要分配 a[i]s[i + 1] 。实现此目的的最简单方法是删除 else子句并执行s[i + j]每次迭代。

关于java - 使用 1 个 for 循环将整数插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com