IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Сортировка списков
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 119
Пол: Мужской

Репутация: -  0  +


Нашёл сортировку списков методом вставки,который писал volvo .
Она мне не подходит.Мне нужна такая сортировка,которую можно применить несколько раз,так,как мне список сначала надо отсортировать по фамилиям,потом по среднему балу.

Имеется таковая?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
получается ,что надо писать одно и то же 2 раза ,только изменять аргумент в каджой сортировке?
А если подумать? И сделать так:
type functype = function (a, b: node): boolean;

function insert_sort(l: plist; less: functype): plist;

function insert(a: plist; l: plist): plist;
begin
a^.next := nil;
if l = nil then insert := a
else
if less(a^, l^) then begin
a^.next := l; insert := a;
end
else begin
l^.next := insert(a, l^.next);
insert := l;
end;
end;

begin
if l = nil then insert_sort := nil
else insert_sort := insert(l, insert_sort(l^.next, less));
end;



И вызывать с разной функцией сравнения?

function less_1(a, b: node): boolean; far;
begin
less_1 := a.field_1 < b.field_1
end;
function less_2(a, b: node): boolean; far;
begin
less_2 := a.field_2 < b.field_2
end;

...
{ вызываем для упорядочивания по первому полю: }
first := insert_sort(first, less_1);
...
{ а теперь - сортируем по второму полю: }
first := insert_sort(first, less_2);
...


Попробуй...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 13.09.2025 3:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name