计数器不递增

时间:2014-01-30 16:16:39

标签: java if-statement counter selection-sort

我有一项任务来计算选择排序中的分配和比较。出于某种原因,我的作业计数器不会递增。我已经尝试将其添加到交换之上,并且我已尝试合并到交换方法中 - 无济于事。任何想法为什么它不起作用?

更新:计数器不适用于此

            Integer[] test = {1, 0, 4, 2};
            selectionSort(test);

但它确实有用:

    selectionSort(new Integer[] {1, 0, 4, 2});

任何人都知道为什么?

public static void selectionSort(Integer[] array)
{
    int assignmentCounter = 0;
    int comparisonCounter = 0;
    int i, j;

    for(i = 0; i < array.length; i++)
    {
        int minIndex = i;
        for(j = i + 1; j < array.length; j++)
        {
            comparisonCounter++;
            if(array[j].compareTo(array[minIndex]) < 0)
            {
                minIndex = j;
                assignmentCounter++;
                swap(array,minIndex,i);
            }
        }
    }
    System.out.println("Selection Sort Comparisons: " + comparisonCounter + "\nSelection Sort Assignments: " + assignmentCounter);
   for(int k = 0; k < array.length; k++)
        {
            System.out.print(array[k] + ", ");
        }
        System.out.println("\n\n ");
}

谢谢!

1 个答案:

答案 0 :(得分:0)

当我运行时

public static void main(String[] args) {
    selectionSort(new Integer[] { 1, 0, 4, 2 });
}

我得到了输出

Selection Sort Comparisons: 6
Selection Sort Assignments: 2
0, 1, 2, 4, 

您是否可能期望更改名为static的{​​{1}}或其他本地变量?

assignmentCounter中声明的变量assignmentCounter是该方法的本地变量。没有任何东西可以看到它。