Как отсортировать односвязный список?

Есть идеи как можно реализовать сортировку внутри класса односвязного списка?

class LinkedListNode<T>
    {
        //создание переменной Value в которой будет храниться значение 
        public T Value;
        // Следущий узел
        public LinkedListNode<T> Next;

        public LinkedListNode(T value, LinkedListNode<T> next = null)
        {
            Value = value;
            Next = next;
        }
    }

class LinkedList<T> where T : IComparable<T>
    {
        private LinkedListNode<T> _head;
        private LinkedListNode<T> _tail;

        private int _count;
        //создание свойства "колво элементов"
        public int Count
        {
            get { return _count;  }
        }

        public LinkedListNode<T> Current
        {
            get { return _head; }
        }

        public LinkedList()
        {

        }
/*
      вырезаный блок кода с разными методами добавления у даления элементов
*/
        public void Sort ()
        {
           // ??????
        }
    }


Вот пример кода сортировки массива чисел, желательно, чтобы сортировка была этим же методом, но только внутри класса:
for (int i = 0; i < intArray.Length; i++)
            {
                int minID = i;
                for (int j = i; j < intArray.Length; j++)
                    if (intArray[minID] > intArray[j])
                        minID = j;
                int temp = intArray[i];
                intArray[i] = intArray[minID];
                intArray[minID] = temp;
            }
  • Вопрос задан
  • 1053 просмотра
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
Для сведения, в C# уже есть готовая реализация связного списка:
https://docs.microsoft.com/en-us/dotnet/api/system...
Но я так понимаю, это для процесса обучения, где надо изобрести собственный велосипед.
В твоём примере алгоритм пузырька - самый медленный из всех возможных алгоритмов сортировки.
В его основе операция замены двух элементов:
int temp = intArray[i];
intArray[i] = intArray[minID];
intArray[minID] = temp;

Ну можешь этот же самый пузырёк реализовать и у себя в классе. Проходи так же по своему списку, находи минимальный, запоминай, потом меняй текущий на минимальный.
Код пиши сам - ты же учишься.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы