java - 在冒泡排序中使用计数器

标签 java methods counter bubble-sort

问题是计算我的冒泡排序算法交换数字位置的次数。我尝试使用一个每次递增一的变量,但我认为可能存在范围错误或类似的错误。它不是返回诸如 6 之类的数字(这意味着数字被交换了 6 次),而是返回 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++;
   }

然后你的计数器应该给你正确的结果。

关于java - 在冒泡排序中使用计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985561/

相关文章:

java - 我的世界 javascript 错误

java - 在 Java 8 之前将方法作为参数传递

javascript - 当用户访问 3 个或更多页面时触发函数

python - 柜台 list

java - 如何将Scala语言与Spring Security集成

java - 如何将 Gui jar 转换为命令行 jar?

Java:MySQL 对象在关闭连接时抛出错误

Java Magic Square - 求和列和求和行错误

java - 如何创建一个接受可变数量参数的 Java 方法?

PHP:命中计数。错误:mysql_num_rows() 期望参数 1 是资源