Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 18:39   #1
Tanusha_221
 
Регистрация: 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.
Tanusha_221 вне форума Ответить с цитированием
Старый 14.04.2010, 20:16   #2
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

Цитата:
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}
Вкрации процедура освобождение памяти, её распределение, и т.д.
А остальное вроде описано.
sllh_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фото в комментарии 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