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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2007, 17:59   #1
FeelTheSkill
Новичок
Джуниор
 
Регистрация: 05.02.2007
Сообщений: 1
Смех Паскаль. Сортировка в Паскале.

Всем привет =)
Мне очень нужна инфа о том как выполнять сортировки в массивах, разного типа =) желательно с примерами =) кто может написать где такое есть плз напишите) Заранее Спасибо )
FeelTheSkill вне форума Ответить с цитированием
Старый 05.02.2007, 19:33   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

http://programmersforum.ru/showthread.php?t=450

FeelTheSkill, на будущее - есть поиск, в том числе и по форуму. Есть такая тенденция у нас на форуме - на темы с непонятным названием не любят отвечать.
Создавайте нормальные названия тем.
Alar вне форума Ответить с цитированием
Старый 09.02.2007, 17:21   #3
Nazarik
 
Аватар для Nazarik
 
Регистрация: 24.01.2007
Сообщений: 9
По умолчанию

Понимаю...
у меня тоже беда - курсак на сортировках надо написать. вот парюсь уже неделю где-то
http://www.politex.lviv.ua - Львівський портал студентів. Заходь!
http://www.forum.politex.lviv.ua - форум
http://www.chat.politex.lviv.ua - чат
Nazarik вне форума Ответить с цитированием
Старый 09.02.2007, 21:57   #4
Time
Пользователь
 
Регистрация: 09.02.2007
Сообщений: 32
По умолчанию

Цитата:
Мне очень нужна инфа о том как выполнять сортировки в массивах, разного типа
Сортировка пузырьком:
Цитата:
procedure BubbleSort(var d:vector;kol2:integer); {d - это массив, kol2 - количество элементов в массиве (так во всех процедурах)}
var j,k:integer;
flag:boolean;
begin
repeat
flag := true;
for i := 1 to kol2-1 do
if d[i] > d[i+1] then
begin
k := d[i];
d[i] := d[i+1];
d[i+1] := k;
flag := false;
end;
until flag = true;
end;
Сортировка выбором:
Цитата:
procedure SelectSort(var d:vector;kol2:integer);
var j,min,nmin,k:integer;
begin
j := 1;
repeat
min := 100;
for i := j to kol2 do
if d[i] < min then begin min := d[i]; nmin := i; end;
for k := nmin downto j+1 do d[k] := d[k-1];
d[j] := min;
j := j + 1;
until j = kol2;
end;
Сортировка вставкой:
Цитата:
procedure InsertSort(var d:vector;kol2:integer);
var j,k,ram:integer;
begin
j := 2;
repeat
ram := d[j];
for i := 1 to j - 1 do
if ram <= d[i] then
begin
for k := j downto i+1 do d[k] := d[k-1];
d[i] := ram;
break;
end;
j := j + 1;
until j = kol2+1;
end;
Сортировка быстрая:
Цитата:
procedure Quick(var d:vector;j:integer;k:integer);
var main,s,ram:integer;
begin
if j = k then exit;
main := d[j];
s := j+1;
for i := j+1 to k do
if d[i] < main then
begin
ram := d[i]; d[i] := d[s]; d[s] := ram;
ram := d[s]; d[s] := d[s-1]; d[s-1] := ram;
if s <> k then s := s + 1;
end;
Quick(d,j,s-1);
Quick(d,s,k);
end;

procedure QuickSort(var d:vector;kol2:integer);
var j,k:integer;
begin
j := 1;
k := kol2;
Quick (d,j,k);
end;
Пользуйся на здоровье! Может пригодиться что. По крайней мере в той теме, которая была предложена не было сортировки вставкой...
Time have not meaning, mind - this is main...
Time вне форума Ответить с цитированием
Старый 10.02.2007, 07:54   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Ещё чуть чуть добавлю:

Сортировка карманная
Код:
сортируется массив A размером N чисел.

procedure sort3;
var c:array[0..100] of integer;
    i,j,k:integer;
begin
for i:=0 to 100 do
c[i]:=0;
for i:=1 to n do
inc(c[a[i]]);
k:=0;
for i:=0 to 100 do
for j:=1 to c[i] do
begin
inc(k);
a[k]:=i;
end;
end;
Сортировка слияниями
Код:
const n=10;
var a,c:array[1..n] of integer;
    t:integer;

...

Procedure Sliv(a1,k,b:integer); {вспомогательная процедура}
var i,j,w:integer;
begin
 w:=0; i:=a1; j:=k+1;
 while (i<=k) and (j<=b) do
  if (a[j]>a[i]) then begin inc(w); c[w]:=A[i]; inc(i); end else
                      begin inc(w); c[w]:=A[j]; inc(j); end;
  for i:=i to k do begin inc(w); c[w]:=A[i]; end;
  for j:=j to b do begin inc(w); c[w]:=A[j]; end;
 w:=0;
 for i:=a1 to b do begin inc(w); A[i]:=c[w]; end;
end;

Procedure Sort_Sliv(b,e:integer);  {sort sliv}
var l:integer;
begin
if (e-b>1) then
begin
 l:=(b+e) div 2;
 if (l-b>0) then Sort_Sliv(b,l);
 if (e-l>0) then Sort_Sliv(l+1,e);
 Sliv(b,l,e);
end else
if (e-b=1) then if A[b]>A[e] then begin t:=A[b]; A[b]:=A[e]; A[e]:=t; end;
end;

Вызов:
Sort_Sliv(1,n);
zetrix вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Сортировка массива Никита35 Помощь студентам 12 24.10.2012 20:13
Сортировка в паскале evrey Паскаль, Turbo Pascal, PascalABC.NET 1 05.06.2008 22:07
Сортировка в файлах и записях. Паскаль Elizabeth Black Помощь студентам 2 27.05.2008 21:51
Упорядочивание (сортировка) массиса(Паскаль) NTFS Помощь студентам 1 25.03.2008 20:22