выяснить, какой алгоритм сортировки используется в этой функции - PullRequest
0 голосов
/ 21 апреля 2020

Привет, может кто-нибудь помочь мне, какой алгоритм сортировки используется в этой функции

public void sortList() {  
        Node current = null, index = null;  
        int temp;  
        //Check whether list is empty  
        if(head == null) {  
            return;  
        }  
        else {  
            //Current will point to head  
            for(current = head; current.next != null; current = current.next) {  
                //Index will point to node next to current  
                for(index = current.next; index != null; index = index.next) {  
                    //If current's data is greater than index's data, swap the data of current and index  
                    if(current.data > index.data) {  
                        temp = current.data;  
                        current.data = index.data;  
                        index.data = temp;  
                    }  
                }  
            }  
        }  
    }  

Кстати, это список двойных ссылок

1 Ответ

0 голосов
/ 22 апреля 2020

Текущий узел является фиксированным, и затем выполняется итерация от следующего узла до конца (через переменную индекса), в конце одной итерации внешнего l oop узел, на который указывает current, имеет правильное значение, затем текущий прогрессирует до следующего узла. Это сортировка выбора, самая элементарная сортировка

Забавный факт: хотя медленная из-за сложности O (n ^ 2) сортировка выбора может использоваться, когда операция записи является дорогой, поскольку она меняет только макс. N раз для списка размером n

...