gpt4 book ai didi

java - 仅对正值进行排序,并保留负值及其索引,因为它属于数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:09 25 4
gpt4 key购买 nike

我只需要为正值按升序对数组进行排序。对于负值,索引位置将保持不变。

如果数组是:int[] inputArray = {-1, 150, 190, 170, -1, -1, 160, 180}

输出应该是这样的 - int[] outputArray = {-1, 150, 160, 170, -1, -1, 180, 190}

但在我的例子中输出这是 - int[] outputArray = {-1, 150, 170, 190, -1, -1, 160, 180}

下面是我的代码:

public static void main(String[] args) {
int[] inputArray = {-1, 150, 190, 170, -1, -1, 160, 180};
int[] outputArray = sortByHeight(inputArray);

for (int item : outputArray) {
System.out.print(item + ", ");
}
}

public static int[] sortByHeight(int[] inputArray) {
for (int i=0; i<inputArray.length; i++) {
for (int j = 0; j<inputArray.length - 1; j++) {
int temp = inputArray[j];
if (temp >= 0) {
if (inputArray[j] > inputArray[j+1] && inputArray[j+1] >= 0) {
inputArray[j] = inputArray[j+1];
inputArray[j+1] = temp;
}
}
}
}
return inputArray;
}

最佳答案

在第二个循环中,对于每个 inputArray[j],您需要在比较之前找到下一个大于 0 的元素。

 public static void main(String[] args) {
int[] inputArray = {-1, 150, 190, 170, -1, -1, 160, 180};
int[] outputArray = sortByHeight(inputArray);

for (int item : outputArray) {
System.out.print(item + ", ");
}
}

public static int[] sortByHeight(int[] inputArray) {
for (int i=0; i<inputArray.length; i++) {
for (int j = 0; j<inputArray.length - 1; j++) {
int temp = inputArray[j];
if (temp >= 0) {
int k = j+1;
while(inputArray[k] < 0)
k++;
if (inputArray[j] > inputArray[k] && inputArray[k] >= 0) {
inputArray[j] = inputArray[k];
inputArray[k] = temp;
}
}
}
}
return inputArray;
}

关于java - 仅对正值进行排序,并保留负值及其索引,因为它属于数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45020416/

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