2014-01-30 1 views
0

У меня есть задание для подсчета присвоений и сравнений в сортировке. По какой-то причине счетчик присваивания не увеличивается. Я попытался добавить его выше свопа, и я попытался включить его в метод подкачки - безрезультатно. Любые идеи, почему это не работает?Счетчик не увеличивается

Update: Счетчик не работает для этого

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

Спасибо!

+4

Ваш массив отсортирован? –

+0

Какова ценность assignCounter, которую вы сейчас получаете? –

+2

Это нормально для меня. –

ответ

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 или другой локальной переменной также называется assignmentCounter быть изменен?

Переменная assignmentCounter, заявленная в selectionSort, является локальной для этого метода. Ничто из этого не видит.

+0

Nope. Никакой другой переменной, кроме той, которая локальна для этого метода. Мой дисплей в точности ваш, кроме моего второго номера. Это так разочаровывает, потому что я не могу двигаться дальше, чтобы на самом деле выполнить мое задание !! – MayNotBe

+0

@MayNotBe Попробуйте очистить и перекомпилировать ваш проект. Если он все еще не работает, я бы использовал отладчик. –

+0

Проверьте это: 'Integer [] test = {1, 0, 4, 2}; \t \t selectionSort (test); \t \t selectionSort (новое целое [] {1, 0, 4, 2}); 'мой путь не увеличивается, ваш путь делает. Почему вы думаете? – MayNotBe