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

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

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

 
 Ответить  Открыть новую тему 
> Сортировка списков
Rom1k
сообщение 16.05.2007 23:38
Сообщение #1


Пионер
**

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

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


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

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


Гость






А что, мою несколько раз применить нельзя? Или ты просто не можешь сделать, чтобы функция сортировала список по разным полям (скажем, в зависимости от аргумента)?
 К началу страницы 
+ Ответить 
Rom1k
сообщение 16.05.2007 23:47
Сообщение #3


Пионер
**

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

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


да.получается что я не могу(
вот ваша сортировка: Сортировка

Я не пойму что надо менять или вообще что надо делать,чтобы сначала по одному упорядочить,потом по другому...

Добавлено через 1 мин.
получается ,что надо писать одно и то же 2 раза ,только изменять аргумент в каджой сортировке?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.05.2007 0:00
Сообщение #4


Гость






Цитата
получается ,что надо писать одно и то же 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 - 17.05.2007 0:01
 К началу страницы 
+ Ответить 
Rom1k
сообщение 17.05.2007 0:12
Сообщение #5


Пионер
**

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

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


ага,сейчас попробую.спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

- Текстовая версия 24.07.2025 0:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"