unit Utils;
interface
type
TIntegerArray = array of Integer;
procedure QuicSort(var A: TIntegerArray; Lo, Hi: Integer);
implementation
procedure QuicSort(var A: TIntegerArray; Lo, Hi: Integer);
procedure Sort(L, R: Integer);
var
i, j, X, Y : Integer;
begin
i := L;
j := R;
X := A[(L + R) shr 1];
repeat
while A < X do Inc(i);
while X < A[j] do Dec(j);
if i <= j then
begin
Y := A;
A:= A[j];
A[j]:= Y;
Inc(i);
Dec(j);
end;
until i > j;
if L < j then
Sort(L, j);
if i < R then
Sort(i, R);
end;
begin {quicksort};
Sort(Lo, Hi);
end;
end.
(Delphi) Быстрая сотировка через классы
Вообщем как написать программу быстрой сортировки с помощью классов!:confused:
Код:
Тут сотрируются целые числа в порядке возрастания. А как уж как ты суда прикрутишь классы - дело твое.
Спасибо конечно, но хотел бы и через классы программу. Ну буду думать. Если будут еще предложения пишите!:)
В VCL есть стандартный класс для манипуляций с массивом данных (TList). В нем реализован метод Sort, принимающий в качестве параметра указатель на функцию сравнения двух элементов, данный метод вызывает процедуру QuickSort из того же модуля (Classes).
Naymen, может объяснишь наконец, что именно требуется? А то "быстрая сортировка через классы" ни о чем совершенно не говорит. Телепаты все в отпуске. Пока не будет нормальной постановки задачи, никто тебе нормального ответа не даст.
Цитата: makbeth
Naymen, может объяснишь наконец, что именно требуется? А то "быстрая сортировка через классы" ни о чем совершенно не говорит. Телепаты все в отпуске. Пока не будет нормальной постановки задачи, никто тебе нормального ответа не даст.
Быстрая сотировка через классы в Delphi в консольном приложении
Цитата: Naymen
Быстрая сотировка через классы в Delphi в консольном приложении
нет....:)
- сортировка методами специального класса
- сортировка массива классов
- 1, 2 или более мерная сортировка
- и т.д.
Код:
type VectorInt=array [1..100] of integer;
var x: VectorInt;
n:Integer;
{Ввод элементов массива}
procedure InitVectorInt(var arr:VectorInt; var l:Integer);
var i:integer;
begin
writeln('Ishodnie dannue: ');
write('Enter kolichestvo elemntov mass n= ');
readln(l);
writeln;
writeln('Enter znachenie elemtov mass: ');
for i:=1 to l do
begin
write(i:2,' element =');
readln(arr);
end;
end;
{Вывод элементов массива}
procedure OutVectorInt(var arr: VectorInt; var l:integer; Mess: String);
var i:integer;
begin
writeln('n=',l:2);
writeln;
writeln(Mess);
for i:=1 to l do write(arr:4);
writeln;
end;
{Перестановка двух элементов}
procedure Change(var a,b: integer);
var t:integer;
begin
t:=a; a:=b; b:=t;
end;
{Сотриторвка элементов массива}
procedure Sort(var mass: Vectorint; l,p:Integer);
var i,j:integer;
r,x:integer;
begin
i:=l; j:=p;
r:=mass[(i+j) div 2];
repeat
while mass<r do Inc(i);
while mass[j]>r do Dec(j);
if i<=j then
begin
change(mass,mass[j]);
Inc(i);
Dec(j);
end;
until i>j;
if l<j then sort(mass,l,j);
if l<p then sort(mass,l,p);
end;
{Головная программа}
begin
InitVectorInt(x,n);
writeln('Ishodnie dannie: ');
OutVectorInt(x,n,'Mass x: ');
writeln;
writeln('Result: ');
writeln;
Sort(x,l,n);
OutVectorInt(x,n,'Mass X: ');
end.
var x: VectorInt;
n:Integer;
{Ввод элементов массива}
procedure InitVectorInt(var arr:VectorInt; var l:Integer);
var i:integer;
begin
writeln('Ishodnie dannue: ');
write('Enter kolichestvo elemntov mass n= ');
readln(l);
writeln;
writeln('Enter znachenie elemtov mass: ');
for i:=1 to l do
begin
write(i:2,' element =');
readln(arr);
end;
end;
{Вывод элементов массива}
procedure OutVectorInt(var arr: VectorInt; var l:integer; Mess: String);
var i:integer;
begin
writeln('n=',l:2);
writeln;
writeln(Mess);
for i:=1 to l do write(arr:4);
writeln;
end;
{Перестановка двух элементов}
procedure Change(var a,b: integer);
var t:integer;
begin
t:=a; a:=b; b:=t;
end;
{Сотриторвка элементов массива}
procedure Sort(var mass: Vectorint; l,p:Integer);
var i,j:integer;
r,x:integer;
begin
i:=l; j:=p;
r:=mass[(i+j) div 2];
repeat
while mass<r do Inc(i);
while mass[j]>r do Dec(j);
if i<=j then
begin
change(mass,mass[j]);
Inc(i);
Dec(j);
end;
until i>j;
if l<j then sort(mass,l,j);
if l<p then sort(mass,l,p);
end;
{Головная программа}
begin
InitVectorInt(x,n);
writeln('Ishodnie dannie: ');
OutVectorInt(x,n,'Mass x: ');
writeln;
writeln('Result: ');
writeln;
Sort(x,l,n);
OutVectorInt(x,n,'Mass X: ');
end.