Пузырьковая сортировка (односвязный список) ошибка
Я пытаюсь отсортировать односвязные списки с помощью пузырьковой сортировки. Когда я запускаю свой код, он сортирует int и двойной список. Странно то, что при сортировке списка строк он сортирует все элементы, кроме одного. Я понятия не имею, почему это происходит. Вот результат, который я получаю.
2 46 39 43 35 50 7 38 45 32
2 7 32 35 38 39 43 45 46 50
2,0 7,0 32,0 35,0 38,0 39,0 43,0 45,0 46,0 50,0
2 32 35 38 39 43 45 46 50 7
import java.util.Random;
public class SLLBubbleSort{
public static void main(String[] args){
Random rand = new Random();
SLL<Integer> sll1 = new SLL<Integer>();
SLL<Double> sll2 = new SLL<Double>();
SLL<String> sll3 = new SLL<String>();
for(int i=0;i<10;i++){
int val = rand.nextInt(50)+1;
sll1.addToHead(val);
sll2.addToHead((double)val);
sll3.addToHead(Integer.toString(val));
}
sll1.printAll();
System.out.println("");
BubbleSort(sll1);
sll1.printAll();
System.out.println("");
BubbleSort(sll2);
sll2.printAll();
System.out.println("");
BubbleSort(sll3);
sll3.printAll();
}
public static <T extends Comparable<? super T>> void BubbleSort(SLL<T> list){
for(int i=0;i<list.getLength();i++){
SLLNode<T> current = list.head;
SLLNode<T> next = current.next;
for(int j=0;j<list.getLength()-1;j++){
if(current.info.compareTo(next.info)>0){
T temp = current.info;
current.info = next.info;
next.info = temp;
}
current = next;
next = next.next;
}
}
}
}
2 ответа
Результат отлично, не думайте, что они как число считают их строкой, согласно значению ascii, 0 идет первым, затем 1, 2, 3 ...7, 8, 9, A, B, C ....X, Y, Z, a, b, c ... x, y, z
Обратитесь к этой ссылке для таблицы ASCII
В этом нет ничего плохого. Обратите внимание, что String
"7" больше, чем "50". Ты смотришь на них как на цифры, а их нет.