gpt4 book ai didi

java - 插入排序和二维数组

转载 作者:行者123 更新时间:2023-12-02 07:36:08 25 4
gpt4 key购买 nike

我正在尝试使用插入排序来按每行的第一列值对 Java 中的二维数组进行排序。我已经在大小为 2 的数组上测试了它,但是当我尝试大小为 3 的代码时,它甚至不运行 for 循环。感谢您提供的任何帮助。

public int[][] sortC(int[][] temp)
{
if (temp.length == 1)
{
return temp;
}
else if (temp.length >= 2)
{
for (int i = 1; i <= temp.length - 1; i++)
{
int holdRow = temp[i][0];
int holdCol = temp[i][1];
// hold past index
int holdRowP = temp[i - 1][0];
int holdColP = temp[i - 1][1];

int j = i;

while (j > 0 && holdRow < holdRowP)
{
holdRow = temp[j][0];
holdCol = temp[j][1];
// hold past index
holdRowP = temp[j - 1][0];
holdColP = temp[j - 1][1];

// make single swap
temp[j][0] = holdRowP;
temp[j][1] = holdColP;

temp[j-1][0] = holdRow;
temp[j-1][1] = holdCol;

j--;
}
}
}

return temp;
}

最佳答案

利用 Java 2D 数组实际上是数组的数组这一事实,您可以简化很多工作并使其适用于任意大小。内部数组(即行)可以作为整个单元移动,而不是像您正在做的那样零散地移动。

由于您的代码正在修改传递的参数,因此也无需返回数组。

调用sortC(input)后,input数组将被排序。

使用这两者,您的代码可以减少为

public void sortC(int[][] temp)
{
if (temp.length >= 2)
{
for (int i = 1; i <= temp.length - 1; i++)
{
int[] hold = temp[i];
int[] holdP = temp[i-1];

int j = i;

while (j > 0 && hold[0] < holdP[0])
{
hold = temp[j];
holdP = temp[j-1];

temp[j] = holdP;
temp[j-1] = hold;

j--;
}
}
}

}

关于java - 插入排序和二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202799/

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