Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 15:27   #1
Lunatik
 
Регистрация: 31.03.2009
Сообщений: 6
По умолчанию Сортировать список пузырьковым методом

Несколько раз переписывала по-разному, все равно не работает. Помогите исправить, пожалуйста... В Delphi.

Код:
procedure sort(var p: ppt);
var i:integer;
q,r: ppt;
begin
q:=p^.next;
q^.pred:=p;
if q^.next=nil then
begin
while q<>nil do
begin
r:=q^.pred;
if  r^.inf> q^.inf then
begin
i:=r^.inf;
r^.inf:=q^.inf;
q^.inf:=i;
q:=q^.pred;
shows(p);
end; end;
end; end;

Последний раз редактировалось Stilet; 12.05.2009 в 15:49.
Lunatik вне форума Ответить с цитированием
Старый 12.05.2009, 15:48   #2
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

чтобы это работало необходимм чтобы в процедуру сортировки передавался последний элемент двухсвязного списка (if q^.next=nil then)
для того чтобы полностью отсортировать список необходимо вводить в процедуре признак окончания сортировки (сортировка считается оконченой когда при просмотре списка нет ни одной перестановки)
Всякое безобразие должно быть единообразным. Тогда это называется порядком.

Последний раз редактировалось Anatole; 12.05.2009 в 15:55.
Anatole вне форума Ответить с цитированием
Старый 12.05.2009, 22:37   #3
Lunatik
 
Регистрация: 31.03.2009
Сообщений: 6
По умолчанию

if q^.next=nil then у меня есть
Можете объяснить насчет признака окончания поподробней?
Lunatik вне форума Ответить с цитированием
Старый 13.05.2009, 13:30   #4
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

в вашей процедуре Sort список просматривается от последнего елемента списка ( іf q^.next=nil) до первого (while q<>nil do и q:=q^.pred следовательно при обращении к этой процедуре, в качества параметра необходимо передавать последний элемент списка, иначе если не выпрлняется условие іf q^.next=nil она закончит работу так и не начав.
Код:
Можете объяснить насчет признака окончания поподробней?
Для того чтобы определить отсортирован список или нет вводится переменная, которой перед началом сортировки задаётся некоторое значение. При сортировке, в случае перестановки любых значений, меняют значение этой переменной. Сортировка считается оконченой если значение этой переменной перед началом сортировки и после ёё окончания не изменяется.
Сможете реализовать?
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Методом Эйлера и методом Рунге-Кутта. Прошу помочь. Очень срочно. BeNeDiKT Паскаль, Turbo Pascal, PascalABC.NET 0 12.05.2009 13:14
Сортировать иерархический список строк с пустыми ячейками domo22 Microsoft Office Excel 9 05.04.2009 13:37
Решение уравнения методом деления отрезка пополам. Методом секущей. Panda196 Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2008 09:06
Сортировать по имени Манжосов Денис :) Помощь студентам 2 25.04.2008 10:12
Как сортировать список TListView по определённому столбцу? Никки Общие вопросы Delphi 1 18.12.2007 19:18