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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2007, 18:15   #1
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию Сортировка массива

Здравствуйте!!!
Дайте пожалуйста код сортировки массива по возрастанию/убыванию
и дайте пожалуйта ссылки где описываютя алгоритмы сортировки
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 21.09.2007, 21:02   #2
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Двухмерный или одномерный массив-?
Если сортировки одномерных то вот тут разные виды:
Sortirivki.rar
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 22.09.2007, 20:04   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Ну вот, смотри... Это всякие виды сортировок.
-------------------------------------------------
begin
for i:=1 to K do
begin
for j:=1 to K-1 do
begin
if a[k+1]<a[k] then
begin
z:=a[k+1];
a[k+1]:=a[k];
a[k]:=z;
end;
end;
end;
end.
--------------------------------------------------------
for i := 2 to n do
begin
Tmp := A[i];
j := i-1;
while (A[j]>Tmp)and(j>1) do
begin
A[j+1] := A[j];
Dec(j)
end;
A[j+1] := Tmp;
end;
--------------------------------------------------
Step := 1;
while Step < N div 9 do Step := Step*3 + 1;
Repeat
for k := 1 to Step do
begin
i := Step + k;
while i <= N do
begin
x := A^[i];
j := i - Step;
while (j >= 1) and (A^[j]>x) do
begin
A^[j + Step] := A^[j];
Dec(j);
end;
A^[j + Step] := x;
Inc(i, Step);
end;
end;
Step := Step div 3;
until Step=0;
------------------------------------------------------
for i := N downto 2 do
begin
MaxIndex := 1;
for j := 2 to i do
if A[j]>A[MaxIndex] then
MaxIndex := j;
Tmp := A[i]; A[i] := A[MaxIndex];
A[MaxIndex] := Tmp;
end;
--------------------------------------------------------------
procedure Sort;
procedure QuickSort(a, b: Longint);
Var
x: Longint; {индекс «среднего» элемента}
begin
x := элемент_выбранный_средним;
...деление на три части:
1) A[a]..A[i]; 2) A[i+1]..A[j-1]; 3) A[j]..A[b]
if i>a then QuickSort(a, i);
if b>j then QuickSort(j, b);
end;
begin
Sort(1, N);
end;
-------------------------------------------------------
procedure Sort;
procedure QuickSort(a, b: Longint);
Var
x: Longint; {индекс «среднего» элемента}
begin
i := A[l]; y := A[(l+r)div 2]; j := A[r];
if i<=y then
if y<=j then
x := (l+r)div 2
else
if i<=j then
x := r
else
x := l
else
if y>=j then
x := (l+r)div 2
else
if i>=j then
x := r
else
x := l;
i := l; j := r; x := A[x];
repeat
while A[i] < x do Inc(i);
while x < A[j] do Dec(j);
if i <= j then
begin
y := A[i]; A[i] := A[j]; A[j] := y;
Inc(i); Dec(j);
end;
until i > j;
if l-j<i-r then
begin
if l < j then QuickSort(l, j);
if i < r then QuickSort(i, r);
end else
begin
if i < r then Sort(i, r);
if l < j then Sort(l, j);
end;
end;
begin
QuickSort(1, N);
end;
Arkuz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива С/С++ Dagget Помощь студентам 1 16.07.2008 12:18
Сортировка массива Dagmaria Общие вопросы C/C++ 5 05.07.2008 00:23
Сортировка массива Kraven Общие вопросы Delphi 3 25.06.2008 18:22
Сортировка массива...? Roberto Помощь студентам 2 11.04.2008 13:32
Сортировка массива MuRdErDoLL Помощь студентам 2 20.12.2006 00:58