冒泡排序方法交换
Bubble Sort method swapping
我的作业要求我编写几个方法来比较 .txt 文件中的一组名字。
我目前卡在了 BubbleSort 方法上。正在努力达到 运行.
这是我的 BubbleSort 代码:
public static int bubbleSort(String[] array) {
boolean swapped = false;
int compNumber = 0;
int length = length.array;
while (swapped = false) {
for (int i = 0; i < length.array-1; i++) {
if (array[i-1] > array[i]) {
String temp =
array[i-1] = array[i];
swapped = true;
}
}
}
return compNumber;
}
我不相信我交换正确,因为我不确定如何使用临时变量(因此它是空白的)。
有人可以看看这个并指出正确的方向吗?
非常感谢!
不确定你的算法是否正确,但这是标准的交换方式。如果您正在对字符串数组进行排序,您还需要获取数值(我假设字符串包含数字?)。
还刚刚注意到你会得到一个数组越界异常,如果你正在查看索引 i-1,则从 1 开始。
还有一点,i < length.array-1
应该是i < array.length
还有一件事,循环应该一直持续到没有进行交换为止,所以它应该是 while (swapped == true)
,并在每次迭代中将其重新设置为 false。
public static void bubbleSort(String[] array) {
boolean swapped = true;
int compNumber = 0;
int length = length.array;
while (swapped == true) { //note the ==
swapped = false;
for (int i = 1; i < array.length; i++) {
compNumber++;
if (Integer.parseInt(array[i-1]) > Integer.parseInt(array[i])) {
String temp = array[i-1]
array[i-1] = array[i];
array[i] = temp;
swapped = true;
}
}
}
return compNumber;
}
我的作业要求我编写几个方法来比较 .txt 文件中的一组名字。
我目前卡在了 BubbleSort 方法上。正在努力达到 运行.
这是我的 BubbleSort 代码:
public static int bubbleSort(String[] array) {
boolean swapped = false;
int compNumber = 0;
int length = length.array;
while (swapped = false) {
for (int i = 0; i < length.array-1; i++) {
if (array[i-1] > array[i]) {
String temp =
array[i-1] = array[i];
swapped = true;
}
}
}
return compNumber;
}
我不相信我交换正确,因为我不确定如何使用临时变量(因此它是空白的)。
有人可以看看这个并指出正确的方向吗?
非常感谢!
不确定你的算法是否正确,但这是标准的交换方式。如果您正在对字符串数组进行排序,您还需要获取数值(我假设字符串包含数字?)。
还刚刚注意到你会得到一个数组越界异常,如果你正在查看索引 i-1,则从 1 开始。
还有一点,i < length.array-1
应该是i < array.length
还有一件事,循环应该一直持续到没有进行交换为止,所以它应该是 while (swapped == true)
,并在每次迭代中将其重新设置为 false。
public static void bubbleSort(String[] array) {
boolean swapped = true;
int compNumber = 0;
int length = length.array;
while (swapped == true) { //note the ==
swapped = false;
for (int i = 1; i < array.length; i++) {
compNumber++;
if (Integer.parseInt(array[i-1]) > Integer.parseInt(array[i])) {
String temp = array[i-1]
array[i-1] = array[i];
array[i] = temp;
swapped = true;
}
}
}
return compNumber;
}