Является ли этот код правильной реализацией Bubble Sort? - PullRequest
0 голосов
/ 11 апреля 2011

Для сортировки используется следующий алгоритм пузырьковой сортировки. Является ли этот алгоритм правильным?

for (int a = itemWiseBidderList.size() - 1; a > 1; a--)
{
    for (int j = 0; j < a; j++)
    { 
        if ((itemWiseBidderList.get(j).getRankInInt()) > (itemWiseBidderList.get(j + 1).getRankInInt()))
        {
           Collections.swap(itemWiseBidderList, j, j + 1);
        }
    }
}

Ответы [ 3 ]

1 голос
/ 11 апреля 2011

Если пузырьковая сортировка не является обязательным требованием (домашнее задание?), То правильный способ реализовать сортировку в Java - вызвать

Collections.sort(itemWiseBidderList);

Если элементы вашего списка реализуют Comparable или

Collections.sort(itemWiseBidderList, new Comparator() {
    public int compare(Object o1, Object o2) {
        // Compare o1, o2 .getRankInInt() here
    }
});

Это будет намного быстрее, чем сортировка по пузырькам.

0 голосов
/ 11 апреля 2011

Кажется, это правильно (хотя я НЕ проверял это), однако Collection должен быть сопоставимым, поэтому вам, вероятно, следует просто позвонить itemWiseBidderList.sort().

Какой тип данных itemWiseBidderList?

0 голосов
/ 11 апреля 2011

Это псевдокод, вы можете проверить, верен ли ваш код:

procedure bubbleSort( A : list of sortable items )
  n = length(A)
  for (i = 0; i < n; i++)
     /* back through the area bringing smallest remaining element to position i */
     for (j = n-1; j > i; j--)
        if A[j-1] > A[j] then
           swap(A[j-1], A[j])
        end if
     end for
  end for
end procedure

источник из википедия

...