冒泡排序算法如何在 Java 中的二维字符串数组上工作?

问题描述 投票:0回答:1

对于一项作业,我必须对州及其州首府的二维数组进行冒泡排序。该数组的名称是 stateCapitals。我应该按州首府排序。

这是二维数组:

String[][] stateCapitals = {
{"Alabama", "Montgomery"},
{"Alaska", "Juneau"},
{"Arizona", "Phoenix"},
{"Arkansas", "Little Rock"},
{"California", "Sacramento"},
{"Colorado", "Denver"},
...
};

(适用于所有 50 个州。)

这就是我的冒泡排序:

for (int i = 0; i < stateCapitals.length - 1; i++) {
for (int j = 0; j < stateCapitals.length - i - 1; j++) {
if (stateCapitals[j][1].compareToIgnoreCase(stateCapitals[j + 1][1]) > 0) {
String[] temp = stateCapitals[j];
stateCapitals[j] = stateCapitals[j + 1];
stateCapitals[j + 1] = temp;
}
}
}

我以前从未对二维数组进行过冒泡排序,并且很难理解它。这是如何运作的?我了解冒泡排序的工作原理,但无法理解其实现方式。我的意思是,这个语句是如何一步步进行排序的?

我已经观察和研究了一段时间,需要一个新的视角。

我真的很感激一些帮助。

谢谢!

java bubble-sort
1个回答
0
投票

让我们分解一下步骤:

  1. 外环
for (int i = 0; i < stateCapitals.length - 1; i++) {

此循环迭代数组中的每个元素,跳过最后一个元素,因为不需要将其与不存在的下一个元素进行比较。

  1. 内循环
for (int j = 0; j < stateCapitals.length - i - 1; j++) {

实际的比较发生在这里,并可能与当前迭代进行交换。正如您所看到的,循环上升到

stateCapitals.length - i - 1
,因为在外循环的每次迭代中,最后的
i
元素已经排序,无需重新检查。

  1. 比较和交换
if (stateCapitals[j][1].compareToIgnoreCase(stateCapitals[j + 1][1]) > 0) {
    String[] temp = stateCapitals[j];
    stateCapitals[j] = stateCapitals[j + 1];
    stateCapitals[j + 1] = temp;
}

在代码的这一部分中,我们将比较两个州首府,看看它们是否按正确的字母顺序排列,无论大小写如何。如果当前位置的资本应该排在下一位置的资本之后,那么它们就会被交换以修复它们的顺序。这可确保列表正确排列。

© www.soinside.com 2019 - 2024. All rights reserved.