Показать сообщение отдельно
  #1  
Старый 25.11.2011, 02:37
vintpirat vintpirat вне форума
Прохожий
 
Регистрация: 25.11.2011
Сообщения: 1
Репутация: 10
По умолчанию Метод бинарных вставок для динамических массивов

Всем привет. Помогите найти ошибку в алгоритме.
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type
  list=array of Integer;
  Arr=array of array of Integer;
var
  mid,Low,High,i,temp,n,m,j:Integer;
A:Arr;
B:list;
 procedure Binar(var Data:List);
begin
  i:=0;
 while i<m do
  begin
  low:=0; high:=i;
  while low<high do
    begin
    mid:=(low+high) div 2;
    if Data[i]<Data[mid] then high:=mid;
    if Data[i]>=Data[mid] then low:=mid+1;
    end;
  temp:=Data[i];
  j:=i-1;
  while j>low do
   begin
   Data[j+1]:=Data[j];
   Dec(j);
   end;
  Data[low]:=temp;
  Inc(i);
  end;
end;

begin
n:=9;m:=7;
Setlength(A,n,m);
SetLength(b,m);
for i:=0 to n-1 do
 begin
   for j:=0 to m-1 do
    begin
      A[i,j]:=Random(1000);
    end;
 end;
for i:=0 to n-1 do
 begin
   for j:=0 to m-1 do
   begin
     b[j]:=a[i,j];
   end;
   Binar(b);
   write(b[j],' ');
 end;
readln;
end.
Админ: Пользуемся тегами для оформления кода!

Процедура binar не работает, если массив индексируется с нуля.
Ответить с цитированием