Frage

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!

War es hilfreich?

Lösung

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top