在冒泡排序中使用计数器

时间:2018-04-23 16:12:48

标签: java methods counter bubble-sort

问题在于计算我的冒泡排序算法切换数字位置的次数。我试图使用一个每次递增1的变量,但我认为可能存在范围或类似的错误。而不是返回一个数字,如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;
}

1 个答案:

答案 0 :(得分:0)

由于你的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++;
   }

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