![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 14.04.2010
Сообщений: 3
|
![]()
Сортировка Бэтчера...вот описание..Например, сначала выполнить (независимо) сортировку подмассивов элементов, стоящих на нечетных и четных местах соответственно, а затем объединить отсортированные последовательности. Разработайте усовершенствованный таким образом алгоритм обменной сортировки. Сам алгоритм у меня есть...только в некоторых местах он мне не понятен...например процедура procedure TForm1.Button1Click...И то, что под второй меткой...Можете помочь комментариями?
unit Sortirovka; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const n=16; var Form1: TForm1; a: array[1..n] of integer; p,q,r,d,t:integer; implementation {$R *.dfm} function Log(x, b: Real): Real; begin Result:=ln(x)/ln(b); end; procedure TForm1.Button1Click(Sender: TObject); label 1,2; var i,buf:integer; begin If log(n,2)>trunc(log(n,2)) then t:=trunc(log(n,2))+1 else t:=trunc(log(n,2)); p:=trunc(exp(ln(2)*(t-1))); //p=2^(t-1) randomize; //Заполнение массива For i:=1 to n do begin a[i]:=random(100); memo1.text:=memo1.text+IntToStr(a[i])+' '; end; memo1.Lines.Add(#13#10); 1: //Задание значений вспомогательных переменных q:=8; r:=0; d:=p; 2: //Цикл сравнения и обмена for i:=0 to n-d-1 do begin if (A[i+1]>A[i+d+1]) then begin buf:=A[i+1]; A[i+1]:=A[i+d+1]; A[i+d+1]:=buf; end; end; if(q<>p) then begin d:=q-p; q:=q div 2; r:=p; goto 2; end; p:=p div 2; If p>0 then goto 1; //Вывод отсортированного массива For i:=1 to n do memo1.text:=memo1.text+IntToStr(a[i])+' '; end; end. |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 10.02.2010
Сообщений: 137
|
![]() Цитата:
А остальное вроде описано. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
фото в комментарии | Gregul | Microsoft Office Excel | 12 | 09.03.2012 01:27 |
комментарии на русском в VC++ | 1000web | Общие вопросы C/C++ | 4 | 05.11.2009 21:51 |
Комментарии к ячейкам | nikolai_P | Microsoft Office Excel | 1 | 18.06.2009 13:54 |
комментарии к коду | leahov | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 09.06.2009 13:09 |
Комментарии к коду | ELL | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 09.03.2009 16:01 |