请帮助我改进该方法,使其排序不是 int,而是 String 数组。ShellSort - 调用此方法。如果总的来说代码或多或少清晰,那么在 for 行中(j = i; j >= gap && arr[j - gap] > temp; j -= gap)
我无法弄清楚如何重写。
int sort(int arr[])
{
int n = arr.length;
for (int i = gap; i < n; i += 1) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
arr[j] = temp;
}
}
return 0;
}
首先,讨论并非毫无用处,它迫使您通过链接到您尝试重写的代码来完成问题,这将问题从“心理战”类别转移到更合适的标题。其次,我在您的代码中没有看到任何新内容,即 与网站上的来源不同(除了它没有完整复制,这也使它工作)。最后,这项任务再简单不过了,因为对于排序算法,使用什么数据并不重要,因此,需要更改的只是方法签名(以便它们接受 String 而不是 int),而且将比较 int 的 arr[j - gap]>temp 的比较运算符更改为比较 String 的 compareTo 方法。也可以去掉数组打印方法,因为对于引用类型,已经编写了这样的方法并且可以开箱即用。而且由于任务如此琐碎,我一直试图找出您在提炼的内容并且无法最终确定,即 这两个词中的哪一个不能被替换:> 与 compareTo 或 int 与 String?但无论如何,理解的欲望已经很好,因此,祝你学习Java好运)