пузырьковая сортировка (односвязный список) ошибка - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь отсортировать односвязные списки с помощью пузырьковой сортировки.Когда я запускаю свой код, он сортирует 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,038,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 ]

0 голосов
/ 03 июня 2018

Результат отлично, не считайте их числами, считайте их строкой, согласно значению ascii, 0 идет первым, затем 1, 2, 3 ... 7, 8, 9, A, B, C.... X, Y, Z, a, b, c ... x, y, z

См. Эту ссылку для таблицы ASCII

0 голосов
/ 03 июня 2018

В этом нет ничего плохого.Обратите внимание, что String "7" больше, чем "50".Ты смотришь на них, как будто на них есть цифры, а их нет.

...