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

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

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

> сортировка двухпутевой вставкой
Гость
сообщение 28.05.2008 11:44
Сообщение #1


Гость






Мальчики, пожалуйста, дайте код сортировки двухпутевой вставкой. Пожалуйста!!!!Оень нужно!!!!!!!!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 24.06.2008 17:19
Сообщение #2


Гость






Любой конвертер C->Pas на ура справляется с этой задачей:

function tinsert(var a: array of integer; n: integer): boolean;
type
parr = ^arr;
arr = array[0 .. pred(maxint div sizeof(integer))] of integer;
var
X: parr;
i, j, t, left, right: integer;

begin
tinsert := false;
getmem(X, (2 * n - 1) * sizeof(integer));
if X = nil then exit;

left := n - 1; right := n - 1;

x^[n - 1] := a[0];
for i := 1 to pred(n) do begin
t := a[i];
if t >= a[0] then begin
j := right;
while (j >= 0) and (t < x^[j]) do begin
x^[j + 1] := x^[j]; dec(j);
end;
x^[j + 1] := t;
inc(right);
end
else begin
j := left;
while (j <= 2 * n - 1) and (t > x^[j]) do begin
x^[j - 1] := x^[j]; inc(j);
end;
x^[j - 1] := t;
dec(left);
end;
end;

for j := left to pred(left+n) do a[j - left] := x^[j];
freemem(X, (2 * n - 1) * sizeof(integer));
tinsert := true;
end;


var i: integer;
const
size = 10;
a: array[1 .. size] of integer = (
2, 5, 7, 9, 0, 11, 15, 6, 9, 8
);

begin
writeln('Сортировка методом вставок:');
{
randomize;
for i := 1 to size do a[i] := random(100);
}
writeln(' До сортировки :');
for i := 1 to size do write(a[i]:4);
writeln;

writeln(' После сортировки :');
if tinsert(a, size) then begin
for i := 1 to size do write(a[i]:4);
writeln;
end
else writeln('ошибка памяти');
end.
(P.S. Ты уверена, что это именно двухпутевые вставки?)
 К началу страницы 
+ Ответить 

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


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

 



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