[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Ledi_Gaga  
Форум » Программирование » Delphi/Pascal » Сортировки (не путать с сартИросками)
Сортировки
_Hz_Дата: Среда, 29.07.2009, 16:19 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 179
Награды: 11
Репутация: 7
Статус: Offline
Сортировка "пузырьком"

Сортировка одномерного динамического целочисленного массива:

Code
type
TIntVec = array of Integer;
...
procedure BubbleSort(var a: TIntVec);
var i,p,n: Integer; b: boolean;
begin
n:= Length(a)-1;
if n < 1 then exit;
repeat
b:= true;
Dec(n);
for i:= 0 to n do
if a[i] > a[i+1] then
begin
p:= a[i];
a[i]:= a[i+1];
a[i+1]:= p;
b:= false;
end;
until b;
end;

Сортировка Шелла

Code
procedure ShellSort(var Arr : TReal1DArray; N : Integer);
//Arr -массив N -количество элементов в массиве (размер)
var
C : Boolean;
G : Integer;
I : Integer;
J : Integer;
Tmp : Double;
begin
g := n div 2;
repeat
i := g;
repeat
j := i-g;
c := True;
repeat
if Arr[j]<=Arr[j+g] then
begin
c := False;
end
else
begin
Tmp := Arr[j];
Arr[j] := Arr[j+g];
Arr[j+g] := Tmp;
end;
j := j-1;
until not ((j>=0) and C);
i := i+1;
until not (i<=n);
g := g div 2;
until not (g>0);
end;

Сортировка вставками

Code
const N=255;
type array_type=array [1..N] of integer;

procedure InsertSort(var x:array_type);
var
i, j, buf:integer;
begin
for i:=2 to N do
begin
buf:=x[i];
j:=i-1;
while (j>=1) and (x[j]>buf) do
begin
x[j+1]:=x[j];
j:=j-1;
end;
x[j+1]:=buf;
end;
end;


 
Форум » Программирование » Delphi/Pascal » Сортировки (не путать с сартИросками)
  • Страница 1 из 1
  • 1
Поиск: