Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6460
Последний выпуск: 19.06.2015

массив в делфи, запутался

85K
25 октября 2012 года
BGS
1 / / 25.10.2012
Сортировка с подсчетом. Выделяют память под счетчик для каждого элемента массива. При каждом просмотре элемент сравнивают со всеми последующими и каждый раз, когда находят больший элемент, его счетчик увеличивают на единицу. Если найденный элемент меньше или равен, то увеличивают счетчик, соответствующий большему из сравниваемых элементов. Следовательно, в любой момент времени счетчик элемента указывает количество элементов, о которых известно, что они меньше элемента, рассматриваемого на данном шагу. Работу метода поясним на примере. В каждом просмотре сравнивается выделенный элемент.

Элементы |Счетчики | Элементы |Счетчики | Элементы |Счетчики |Элементы|Счетчики
3 | 2 | 3 | 2 | 3 | 2| 3 | 2
11 | 1 | 11 | 10 |11 |10 |11 | 10
6 | 1 | 6 | 1 | 6 | 5 | 6 | 5
4 | 1 | 4| 1| 4 | 1| 4| 3
9 | 1 | 9 | 1 | 9 | 2 | 9 | 8
5 | 1 | 5 | 1| 5| 1| 5 | 4
7 | 1| 7 | 1| 7 | 2| 7| 6
8 | 1 | 8 | 1 | 8 | 2| 8| 7
10 | 1 | 10 | 1 | 10 | 2 | 10| 9
2 | 0 | 2 | 0 | 2| 0 | 2| 1
1 | 0| 1| 0| 1| 0| 1| 0
Конец первого просмотра Конец второго просмотра Конец третьего просмотра Последний просмотр
Вот запутался тут.

Код:
const n=11;
  var
   mass:array[1..n] of integer;
      schetchik: array[1..n] of integer;


procedure TForm1.Button1Click(Sender: TObject);
var
    i:integer;
    s,s1:string;
begin
memo1.Clear;
randomize;
s:='';
mass[1]:=3;
mass[2]:=11;
mass[3]:=6;
mass[4]:=4;
mass[5]:=9;
mass[6]:=5;
mass[7]:=7;
mass[8]:=8;
mass[9]:=10;
mass[10]:=2;
mass[11]:=1;

for i:=1 to n do
begin
  // mass[i]:=random(10);
   s:=s+IntToStr(mass[i])+'  ';
   schetchik[i]:= 0;
   s1:=s1+IntToStr(schetchik[i])+'  ';
  end;
 memo1.Lines.Add(s+#13#10+s1);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j,max,max1:integer;
    s,s1,s2,s3:string;
begin
memo1.Lines.add(' ');
 for i:=1 to n-1 do
 begin
   max:=mass[i];
   max1:=0;
      s:='';
     s1:='';
    for j:=1 to n-1 do
    begin
      if (mass[i]<mass[j]) and (j>i) then
      begin
       s2:=s2+inttostr(1)+' ';
       end;
       if (mass[i]=mass[j]) then s2:=s2+inttostr(0)+' ';
      if (max>mass[j]) and (max1<mass[j]) then
      begin
         max1:=mass[j];

      end ;


       if j=n-1 then
       begin
         s3:=s3+IntToStr(max1)+' ';
         s1:=s3+s2+' '+IntToStr(schetchik[n]);
         memo1.Lines.Add(s1);
         s2:='';
       end;
     end;
    end;

end;

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог