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

Ваш аккаунт

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

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

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

(Delphi) Быстрая сотировка через классы

31K
17 декабря 2007 года
Naymen
12 / / 17.12.2007
Вообщем как написать программу быстрой сортировки с помощью классов!:confused:
17K
18 декабря 2007 года
jack marked
20 / / 12.11.2006
Вот тебе модуль с процидурой быстрой сортировки
Код:
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.

Тут сотрируются целые числа в порядке возрастания. А как уж как ты суда прикрутишь классы - дело твое.
31K
19 декабря 2007 года
Naymen
12 / / 17.12.2007
Спасибо конечно, но хотел бы и через классы программу. Ну буду думать. Если будут еще предложения пишите!:)
33K
19 декабря 2007 года
Rcus
1 / / 13.10.2007
В VCL есть стандартный класс для манипуляций с массивом данных (TList). В нем реализован метод Sort, принимающий в качестве параметра указатель на функцию сравнения двух элементов, данный метод вызывает процедуру QuickSort из того же модуля (Classes).
303
19 декабря 2007 года
makbeth
1.0K / / 25.11.2004
Naymen, может объяснишь наконец, что именно требуется? А то "быстрая сортировка через классы" ни о чем совершенно не говорит. Телепаты все в отпуске. Пока не будет нормальной постановки задачи, никто тебе нормального ответа не даст.
31K
19 декабря 2007 года
Naymen
12 / / 17.12.2007
Цитата: makbeth
Naymen, может объяснишь наконец, что именно требуется? А то "быстрая сортировка через классы" ни о чем совершенно не говорит. Телепаты все в отпуске. Пока не будет нормальной постановки задачи, никто тебе нормального ответа не даст.



Быстрая сотировка через классы в Delphi в консольном приложении

286
19 декабря 2007 года
misha_turist
572 / / 28.11.2005
Цитата: Naymen
Быстрая сотировка через классы в Delphi в консольном приложении


нет....:)

  1. сортировка методами специального класса
  2. сортировка массива классов
  3. 1, 2 или более мерная сортировка
  4. и т.д.
и кстати консольный режим или не консольный в данном случае не важно...:)
31K
23 декабря 2007 года
Naymen
12 / / 17.12.2007
ВОт сама прога на Pascal а мне надо на делфи да через классы
Код:
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.
[SIZE=3][COLOR=Red]Темы типа Хэлп разрешены только в разделе Студентам! Читай правила разделов, прежде создания темы и научись работать с тэгами code. Получаешь предупреждение. Модератор.[/COLOR][/SIZE]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог