문제

I have an assignment to count the assignments and comparisons in a selection sort. For some reason my assignment counter isn't incrementing. I've tried adding it above the swap and I've tried incorporating into the swap method - to no avail. Any ideas why it's not working?

Update: The counter doesn't work for this

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

But it does work for this:

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

Anyone know why?

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 ");
}

Thank you!

도움이 되었습니까?

해결책

When I run this

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

I get the output

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

Are you possibly expecting a static or other local variable also called assignmentCounter to be changed?

The variable assignmentCounter declared in selectionSort is local to that method. Nothing outside of it can see it.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top