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

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

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

 
 Ответить  Открыть новую тему 
> Процедура сортировки бинарными вставками, Помогите плиз!!!
Neon6868
сообщение 12.03.2007 20:04
Сообщение #1


Пионер
**

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

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


Я написал процедуру сортировки вставки! Помогите её переделать в процедуру сортировки бинарными вставками!!


Procedure sortirovka_vstavkami(a:mas);
var
i,x,y,j:integer;
Begin
for i:=2 to n do begin
x:=a[i];
a[0]:=x;
j:=i;
while x<a[j-1] do begin
y:=y+1;
a[j]:=a[j-1];
j:=j-1;
end;
a[j]:=x;
end;
writeln('Sortirovka vstavkami');
for i:=1 to n do write(a[i]:5);
writeln;
writeln('Chislo sravnenii:',y);
End;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.03.2007 20:10
Сообщение #2


Гость






Зачем что-то ПЕРЕделывать, если можно взять уже сделанное?

http://alglib.sources.ru/sorting/bininssort.php
(там есть исходник на Дельфи, открой его в браузере, и изучай...)
 К началу страницы 
+ Ответить 
Neon6868
сообщение 12.03.2007 20:43
Сообщение #3


Пионер
**

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

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


Цитата(volvo @ 12.03.2007 20:10) *

Зачем что-то ПЕРЕделывать, если можно взять уже сделанное?

http://alglib.sources.ru/sorting/bininssort.php
(там есть исходник на Дельфи, открой его в браузере, и изучай...)


Я оттуда прогу взял, а она неправильно работает!!! Самый последний элемент должен быть первым!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.03.2007 20:59
Сообщение #4


Гость






Да ты что? Почему у меня тогда вот это:
const n = 20;
var
X: array[0 .. pred(n)] of integer;
i: integer;
begin
for i := 0 to pred(n) do
X[i] := random(50);

for i := 0 to pred(n) do write(X[i]:3);
writeln;

BinaryInsertionSort(X, n);

for i := 0 to pred(n) do write(X[i]:3);
writeln;
end.
выдало совершенно правильный результат:
 27 29 35 42 30 42 27 42 21 31 32 19 21 14 44  2 48 13 19 23
2 13 14 19 19 21 21 23 27 27 29 30 31 32 35 42 42 42 44 48
?
 К началу страницы 
+ Ответить 
Neon6868
сообщение 12.03.2007 21:09
Сообщение #5


Пионер
**

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

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


Вот моя прога:


Program sortirovka;
const
n=8;
type
mas=array[0..n] of integer;
var
a:mas;
i,j:integer;
Procedure binarnie_vstavki(a:mas);
var
x,i,j,y,l,m,r,v,k:integer;
Begin
i:=2;
repeat
l:=1;
r:=i-1;
m:=(l+r) div 2;
while l<>m do begin
if a[m-1]>a[i-1] then r:=m
else l:=m;
m:=(l+r) div 2;
end;
if a[l-1]<a[i-1] then begin
if a[i-1]>a[r-1] then l:=r+1
else l:=r;
end;
k:=i;
v:=a[i-1];
while k>l do begin
a[k-1]:=a[k-2];
k:=k-1;
end;
a[l-1]:=v;
i:=i+1;
Until not (i<=n);
writeln('Sortirovka binarnimi vstavkami');
for i:=1 to n do write(a[i]:5);
writeln;
writeln('Chislo sravnenii:',y);
End;
Begin
randomize;
writeln('Isxodnii massiv:');
for i:=1 to n do begin
a[i]:=random(50)-25;
write(a[i]:5);
end;
writeln;
binarnie_vstavki(a);
readln;
End.



Результат:


Исходная матрица:
-1 11 5 24 21 18 23 8
Сортировка бинарными вставками:
0 5 11 18 21 23 24 8



Сообщение отредактировано: Neon6868 - 12.03.2007 21:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.03.2007 21:22
Сообщение #6


Гость






Почему заполнение от 1 до n? Хотя в программе ЯСНО сказано: от 0 до n-1... Для кого это написано по-твоему?

Добавлено через 1 мин.
Я ж тебе даже пример привел, нет, ты опять по-своему делаешь... Зачем спрашиваешь тогда???
 К началу страницы 
+ Ответить 
Neon6868
сообщение 12.03.2007 22:04
Сообщение #7


Пионер
**

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

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


Цитата(volvo @ 12.03.2007 21:22) *

Почему заполнение от 1 до n? Хотя в программе ЯСНО сказано: от 0 до n-1... Для кого это написано по-твоему?

Добавлено через 1 мин.
Я ж тебе даже пример привел, нет, ты опять по-своему делаешь... Зачем спрашиваешь тогда???


Если я делаю от 0 до n-1 то тогда перестают работать 3 других метода!!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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