Как реализовать пузырьковую сортировку в обобщенном двусвязном списке? - C#
Формулировка задачи:
Как реализовать пузырьковую сортировку в обобщенном двусвязном списке? Сначала думал все просто, хотел реализовать операции перегрузки операторов, но оказалось для обобщенного типа нельзя этого сделать.
Решение задачи: «Как реализовать пузырьковую сортировку в обобщенном двусвязном списке?»
textual
Листинг программы
class Program { static void Main(string[] args) { Car first = null, prev = null; Random r = new Random(); for (int i = 0; i < 10; i++) { prev = new Car(prev, first, r.Next(1990, 2016)); if (i == 0) first = prev; Console.WriteLine(prev.year); } Console.WriteLine("----"); Car.Sort(first); Car.Print(first); Console.ReadKey(true); } } class Car { Car prev, next; public int year; public Car(Car prev, Car next, int year) { this.year = year; if (prev == null) this.prev = this.next = this; else { prev.next = next.prev = this; this.prev = prev; this.next = next; } } static public void Sort(Car first) { for (Car end = first.prev; end != first; end = end.prev) for (Car ptr = first; ptr != end; ptr = ptr.next) if (ptr.year > ptr.next.year) { int year = ptr.year; ptr.year = ptr.next.year; ptr.next.year = year; } } static public void Print(Car first) { Car ptr = first; do { Console.WriteLine(ptr.year); ptr = ptr.next; } while (ptr != first); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д