在冒泡排序中使用计数器
Using a counter in bubble sort
问题是计算我的冒泡排序算法切换数字位置的次数。我尝试使用一个每次递增 1 的变量,但我认为范围或类似的东西可能存在错误。它没有返回诸如 6 之类的数字(这意味着数字被交换了 6 次),而是 returns 0,这就是我将变量初始化为的值。如何让我的程序运行?
public static int sort(int arr[]) {
int length = arr.length;
int temp;
int count = 0;
for (int i = 0; i < (length); i++) {
for (int j = 1; j < (length); j++) {
if (arr[j - 1] > arr[j]) {
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
count++;
}
}
}
return count;
}
由于您的 for 循环条件和初始化,您的算法似乎未优化。结果,您将一个元素与其自身进行比较,这是多余的。
正确的做法应该如下所示:
int yourCounter = 0;
for (int i = 0; i < length; i++)
for (int j = 1; j < length-i; j++)
if (arr[j - 1] > arr[j]) {
//swap code
//yourCounter++;
}
你的计数器应该会给你正确的结果。
问题是计算我的冒泡排序算法切换数字位置的次数。我尝试使用一个每次递增 1 的变量,但我认为范围或类似的东西可能存在错误。它没有返回诸如 6 之类的数字(这意味着数字被交换了 6 次),而是 returns 0,这就是我将变量初始化为的值。如何让我的程序运行?
public static int sort(int arr[]) {
int length = arr.length;
int temp;
int count = 0;
for (int i = 0; i < (length); i++) {
for (int j = 1; j < (length); j++) {
if (arr[j - 1] > arr[j]) {
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
count++;
}
}
}
return count;
}
由于您的 for 循环条件和初始化,您的算法似乎未优化。结果,您将一个元素与其自身进行比较,这是多余的。
正确的做法应该如下所示:
int yourCounter = 0;
for (int i = 0; i < length; i++)
for (int j = 1; j < length-i; j++)
if (arr[j - 1] > arr[j]) {
//swap code
//yourCounter++;
}
你的计数器应该会给你正确的结果。