#java #sorting #bubble-sort
#java #сортировка #пузырьковая сортировка
Вопрос:
Для выполнения сортировки я использую следующий алгоритм пузырьковой сортировки. Верен ли этот алгоритм?
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);
}
}
}
Комментарии:
1. вы могли бы попробовать выполнить стандартную пузырьковую сортировку и посмотреть, правильна ли она?
2. Вы тестировали код? Он отсортировал itemWiseBidderList, как вы ожидали? Если да, то алгоритм верен, в противном случае он неисправен. В последнем случае сообщите нам, каков результат, и мы поможем вам. Если это первый случай, вы просто тратите наше время 😉
3. Что он делает, когда вы его тестируете?
4. Это не имеет значения, поскольку использовать Bubblesort вообще некорректно. Используйте метод сортировки, который поставляется с вашей коллекцией.
Ответ №1:
Если пузырьковая сортировка не является обязательным требованием (по домашнему заданию?), то правильный способ реализовать сортировку в Java — это вызвать
Collections.sort(itemWiseBidderList);
Если элементы вашего списка реализуют Comparable
, или
Collections.sort(itemWiseBidderList, new Comparator() {
public int compare(Object o1, Object o2) {
// Compare o1, o2 .getRankInInt() here
}
});
Это будет намного быстрее, чем пузырьковая сортировка.
Ответ №2:
Это псевдокод, вы можете проверить, верен ли ваш код:
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
источник из Википедии
Ответ №3:
Он действительно кажется правильным (хотя я его НЕ тестировал), однако Collection
предполагается, что он сопоставим, поэтому вам, вероятно, следует просто вызвать itemWiseBidderList.sort()
.
Что это за тип данных itemWiseBidderList
?
Комментарии:
1.
Collection
не имеетsort()
метода. Некоторые коллекции не могут быть отсортированы (например,Set
). Но вCollections