Счетчик свопов сортировки выбора Java

У меня есть этот код, и мне нужна небольшая помощь, чтобы выяснить количество свопов. Я думаю, что мне нужен цикл for, где он отмечен, но я не понимаю, как извлечь счетчик подкачки. Заранее спасибо.

public class Selection
{
    public static void SelectionSort ( int [ ] num, int howmany )
    { 
        int i, j, first, temp;  
        int comparecount = 0;
        int swapcount = 0;

        for ( i = num.length - 1; i > 0; i-- )  
        {   
            first = 0;   
            for(j = 1; j <= i; j ++)   
            {  
                comparecount++;

                if( num[ j ] < num[ first ] )         
                    first = j;
            }
            temp = num[ first ];   //need to count swaps ???
            num[ first ] = num[ i ];
            num[ i ] = temp; 
        }

        System.out.print(comparecount);
        System.out.print(swapcount);
    }
}

person John Wiegel    schedule 07.05.2013    source источник
comment
вы не можете просто увеличить swapcount в своем комментарии ??   -  person Breavyn    schedule 07.05.2013
comment
также где используется int howmany? почему это там?   -  person Breavyn    schedule 07.05.2013
comment
Я передал его для чего-то другого и не удалил его   -  person John Wiegel    schedule 07.05.2013
comment
Что касается swapcount, то в комментарии я получаю 122549, что, по-моему, неправильно.   -  person John Wiegel    schedule 07.05.2013
comment
Домашнее задание? Взгляните на этот похожий вопрос: stackoverflow.com/questions/16409436/sort-comparisons -счетчик   -  person Jason    schedule 07.05.2013


Ответы (1)


Вы действительно ответили на свой вопрос. Вы говорите, что хотите подсчитать свопы, а затем поместили комментарий именно там, где вы меняете местами... так что просто увеличьте количество свопов там.

В качестве ошибки отображения вы используете print, а не println, из-за чего ваши числа отображаются рядом и неотличимы друг от друга.

person greedybuddha    schedule 07.05.2013
comment
Что касается swapcount, то в комментарии я получаю 122549, что, по-моему, неправильно. - person John Wiegel; 07.05.2013
comment
сколько элементов вы сортируете? это действительно может быть правильно. Помните, что сортировка выбором — это алгоритм N^2, поэтому, если у вас более 400 элементов, скорее всего, потребуется именно столько. - person greedybuddha; 07.05.2013
comment
Проблема в том, что вы используете print как println. что означает, что вы распечатываете счет сравнения и количество свопов рядом. Из-за этого число кажется намного больше, чем оно есть на самом деле. Я также обновил свой ответ этим - person greedybuddha; 07.05.2013
comment
Я просто тоже это понимаю. извините всех - person John Wiegel; 07.05.2013