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

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

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

> Сортировка связанного списка, методом пузырька, срочно
Chilly
сообщение 20.06.2005 16:36
Сообщение #1


Гость






Сортировка связанного списка методом "пузырька". Точнее надо этот код преобразовать для списка. Здесь с объектом, но это важно:

procedure O_Array.Job;
var
i,k,b:integer;
f:boolean;
begin
if M=0 then
begin
writeln('Error! Array is not create!');
writeln('Press any key...');
readkey;
exit;
end;

K:=M;
repeat
K:=K-1;
f:=true;
for i:=1 to K do
if a^[i]<a^[i+1] then
begin
b:=a^[i];
a^[i]:=a^[i+1];
a^[i+1]:=b;
f:=false;
end;
until f;
end;
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
Altair
сообщение 20.06.2005 16:51
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Для реалиации сортировки пузырем, тебе надо реализовать SWAP для 2 элементов списка.
FAQ читал? если да, то в реализации SWAP'a проблемм не будет!
p.s. кстати swap не обызательно делать для звена списка, достаточно для информационной части списка- так проще будет....


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Chilly
сообщение 20.06.2005 17:20
Сообщение #3


Гость






Мне бы с исходником, а то я воще не шарю
 К началу страницы 
+ Ответить 
volvo
сообщение 20.06.2005 18:13
Сообщение #4


Гость






Массив A как описан, можно посмотреть? Если его элементы достаточно большого размера, то придется мудрить с указателями, иначе Oleg_Z прав, легче поменять сами элементы...
 К началу страницы 
+ Ответить 
Altair
сообщение 20.06.2005 19:07
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


volvo, ты имеешь ввиду под
Цитата
элементы достаточно большого размера

sizeof от элемента массива?
А где та граница, за которой надо будет мудрить с указателями?
Кстати интересно, что быстрее будет - поменять информационные части или мудрить с указателями?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.06.2005 19:16
Сообщение #6


Гость






Сколько указателей надо поменять, чтобы "поменять" местами 2 элемента списка? Естественно, если элемент массива - Byte или Integer, то проще поменять местами сами элементы... Если же у тебя A[i] это
Array [1 .. 75] Of LongInt
то я бы сильно подумал, прежде чем перетягивать такие объемы с места на место... ведь эта функция при пузырьковой сортировке будет выполняться сотни (если не тысячи) раз, так зачем же переносить данные, если можно сделать несколько операций с указателями?
 К началу страницы 
+ Ответить 
Altair
сообщение 20.06.2005 19:22
Сообщение #7


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Тогда надо вообщетак
IF размер допускает Then перемещаем элементы
else меняем указатели.

Только надо расчитать что это за размер "размер допускает", .....
думаю так будет наиболее функционально smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Chilly
сообщение 20.06.2005 21:54
Сообщение #8


Гость






Всем спасибо! Я уже сам сделал!
 К началу страницы 
+ Ответить 
trminator
сообщение 20.06.2005 22:30
Сообщение #9


Четыре квадратика
****

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

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


По идее, граница между "размер позволяет" и нет - что больше по размеру, указатель или содержимое. Указатель... эээ... ммм... двойное слово?


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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