Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка вставками 
:(
    Опции темы
Frogs2009
Дата 20.6.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 17.6.2008

Репутация: нет
Всего: нет



Сортировка вставками. Дана последовательность чисел a1, a2, …, an. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть a1, a2,…, ai упорядо-ченная последовательность, т.е. a1 ≤ a2 ≤…≤ ai. Берется сле-дующее число аi+1 и вставляется в последовательность так, чтобы новая последовательность была тоже возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до n не будут перебраны. Примечание. Место помещения очередного элемента в сортировочную часть производить с помощью двоичного поиска. Двоичный поиск оформить в ви-де отдельной функции.



Код

procedure BinaryInsertionSort(var Arr : array of Real; N : Integer);
var
B,C,E,I,J,K : Integer;
Tmp : Real;
begin
i:=2;
repeat
b:=1;
e:=i-1;
c:=((b+e) div 2);
while b<>c do
begin
if Arr[c-1]>Arr[i-1] then e:=c
else b:=c;
c:=((b+e) div 2);
end;
if Arr[b-1]<Arr[i-1] then
begin
if Arr[i-1]>Arr[e-1]
then b:=e+1
else b:=e;
end;
k:=i;
Tmp:=Arr[i-1];
while k>b do
begin
Arr[k-1]:=Arr[k-1-1];
dec(k)
end;
Arr[b-1]:=Tmp;
inc(i);
until not(i<=n);
end.

помогите пожалуйста, что дальше делать, подскажите! заранее спасибо!
PM MAIL   Вверх
deswars
Дата 24.6.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.6.2008

Репутация: нет
Всего: нет



Попробуй такой кодhttp://forum.vingrad.ru/html/emoticons/pack/smile.gif:
Код

procedure InsSort(var Arr:array[{...}] of Real; N:integer);
{сортировка масива}
 var
  i,m,k,xinteger;
 begin
  for i:=2 to n do 
   begin
    x:=BynSearch(arr,i-1,arr[i]);
    m:=arr[i];
    for k:=i downto x+1 do
      a[k]:=a[k-1];
    a[x]:=m;
   end;
 end;

function BinSearch(arr:array[{...}] of real; n:integer; key:real):integer;
{Бинарный поиск
передается масив, длинна масива и ключ;
возвращается место вставки }
 var
  a,b,c:integer;
 begin
  a:=1;
  b:=n;
  c:=(b+e) div 2;
  while a<>b do 
   begin
    if arr[c]>key then
      b:=c;
     else
       a:=c;
    c:=(a+b) div 2;
   end;
  BinSearch:=c;
 end;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.