SS}}

Delphi.int.ru — Портал программистов

Вход Регистрация | Забыли пароль?

События

Сегодня:
Вопросы0    Ответы0    Мини-форумы0


Последние:
Вопрос29.11, 09:46 / #6691
Ответ29.03, 23:32 / #6682
Новости30 апреля 2012


Сейчас онлайн:
На сайте — 5
На IRC-канале — 2

Ссылки

Пирамидальная сортировка

Алгоритм пирамидальной сортировки (heapsort) — один из самых быстрых алгоритмов сортировки.

Program heapsort; {$APPTYPE CONSOLE} type tkey = integer; int = integer; const N = 10; var a,b : array [0..N+1] of tkey; function parent(x : int) : int; begin result:=x shr 1; end; function left(x : int) : int; begin result := x shl 1; if result > a[0] then result := N+1; end; function right(x:int):int; begin result := x shl 1 + 1; if result > a[0] then result := N+1; end; procedure swap(i,j : int); var temp : tkey; begin temp := a[i]; a[i] := a[j]; a[j] := temp; end; procedure moveup(x : int); begin while (a[x] > a[parent(x)]) and (parent(x) > 0) do begin swap(x, parent(x)); x := parent(x); end; end; procedure movedown(x : int); var max : integer; begin if a[left(x)] > a[right(x)] then max := left(x) else max := right(x); while (a[max] > a[x]) and (max <= a[0]) do begin swap(max, x); x := max; if a[left(x)] > a[right(x)] then max := left(x) else max := right(x); end; end; procedure update(x : int; k : tkey); begin a[x] := k; moveup(x); movedown(x); end; procedure add(k : tkey); begin inc(a[0]); update(a[0], k); end; procedure delete(x : int); begin swap(x, a[0]); dec(a[0]); update(x, a[x]); end; procedure hsort; var i:int; begin a[0] := 1; a[1] := b[1]; for i := 2 to N do add(b[i]); for i := 1 to N do delete(1); end; var i : int; begin randomize; fillchar(a, sizeof(a), 0); fillchar(b, sizeof(b), 0); for i := 1 to N do b[i] := random(10); writeln('Non-sorted elements'); for i := 1 to N do write(b[i], ' '); writeln; hsort; writeln('Sorted elements'); for i := 1 to N do write(a[i], ' '); readln; end.

Автор: Дмитрий Ромодин

Статья добавлена: 21 января 2005

Следующая статья: Написание простого медиа-проигрывателя (часть 1) »

Рейтинг статьи: 5.00 Голосов: 1 Ваша оценка:

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.


Статьи, похожие по тематике

 

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
{{a:16}} (буква a — латинская) — только адрес статьи (URL);
{{статья:16}} — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:


Комментарии читателей к данной статье

Пока нет комментариев к данной статье. Оставьте свой и он будет первым.

Оставлять комментарии к статьям могут только зарегистрированные пользователи.