ПРЕДПОСЫЛКА: Я хочу реализовать сортировку выбором, способную обрабатывать список массивов, связанный список и двусвязный список. Для каждого типа списка у меня есть класс position{} и list{}. Класс position{} — это то, что содержит список (т. е. класс position{int head; list tail;}). Хотя СПИСОК{} содержит методы next(), previous(), end(), Insert(), first() и использует position{}, он не содержит самого класса списка, самого класса списка, который создает список. называется позицией класса{}.
ВОПРОС: Моя проблема не в том, чтобы сделать сортировку выбором совместимой, я достиг этого, используя только команды, которые являются общими для трех абстрактных типов данных списка. Моя проблема заключается в том, что моя сортировка выбором возвращает тот же список и не выполняет никакой сортировки. Список, напечатанный после сортировки, совпадает со списком, напечатанным до сортировки. Любая помощь приветствуется.
вывод до сортировки выбором 2 879 621 229 702 40 243 312 247 46 711 241 после сортировки выбором 2 879 621 229 702 40 243 312 247 46 711 241
Мой список ADT правильный, проблема заключается в моей плохой сортировке выбора.
public static void SelectionSort(LIST A) {
POSITION i, j, maxp, temp;
for(i = A.Previous(A.End()); !i.isEqual(A.First()); i = A.Previous(i)) {
maxp = i;
for(j = A.First(); !j.isEqual(i); j = A.Next(j)) {
if((Integer)A.Select(j) > (Integer)A.Select(maxp)) {
maxp = j;
}
}
temp = i;
A.Insert(i, A.Select(maxp));
A.Insert(maxp, A.Select(temp));
A.Delete(maxp);
A.Delete(i);
}
}