2016-05-11 2 views
0

Я пытаюсь подсчитать инверсии в перестановке, и для этого мне нужно сделать обмен. Дело в том, массив символов должен выглядеть B, и я пытаюсь использовать что-то вроде механизма BubbleSort, но замена не работает на всех, и я не знаю, почему, вот код:Подсчет инверсий - массив символов не хочет меняться?

char[] john = {'A', 'A', 'C', 'B'}; 
    char[] marg = {'B', 'A', 'C', 'A'}; 

    for(int i=0; i<john.length; i++){ 
     for(int j=i+1; j<john.length; j++){     
       if(marg[i]==john[j]){ 
        char temp = john[j]; 
        john[j] = john[j-1]; 
        john[j-1] = temp; 
        counter++; 
       }          
     } 
    } 

После этого цикл john выглядит точно так же, как раньше.

Я хочу, чтобы преобразовать массив символов Джона в марг (с подсчетом всех свопов), так что для этого примера счетчика должны иметь значение 4.

Что я делаю неправильно?

+0

Прикрепите отладчик и отлаживайте код. – Vampire

ответ

1

Я думаю, вы должны поменять john[j] на john[i], а не john[j] с john[j-1]. В настоящее время вы дважды меняете два последних элемента john и получаете результат в качестве результата.