Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Быстрая сортировка

Понятие множества и способы его задания | Операции над множествами | Свойства операций над множествами | Упорядоченные множества. Прямое произведение множеств | Понятие сортиравки | Пузырьковая сортировка | Сортировка выбором | Cортировка вставками | Способы задания бинарных отношений | Операции над бинарными отношениями |


Читайте также:
  1. VBA4. Сортировка чисел в столбце по возрастанию или убыванию
  2. VBA7. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы и панели инструментов с кнопкой
  3. Алгоритм 2.14. Сортировка таблиц, управляемая пользователем
  4. Вопрос 55 . Сортировка записей на экране: использование фильтра
  5. Вопрос 93.В MS PowerPoint режим сортировка слайдов предназначен дляпросмотра слайдов в полноэкранном режиме.
  6. Выберите категорию (например, Быстрая публикация).

 

Одним из методов сортировки массива чисел является «Быстрая

 

сортировка» (Quicksort). Сущность метода состоит в том, что на каж-

 

дой итерации выделяется часть массива чисел — рабочий массив — и для него находится главный (пороговый) элемент x Î A, распола-гающийся в рабочем массиве так, что каждое число в нем, распола-гающееся левее элемента x, меньше x, а каждое число, располагаю-щееся правей элемента x, больше x (см. рис. 4.1).


 

 

Рис. 4.1. Быстрая сортировка

 

Первоначально в качестве рабочего выбирается исходный массив, то есть устанавливаем границы рабочего массива l =1 и r = n. В каче-стве главного выбирается элемент x, находящийся в середине масси-ва. Далее, начиная с i =1, последовательно увеличиваем значение i на единицу и сравниваем каждый элемент a c x, пока не будет найден

 

элемент a такой, что a > x.

 

Затем, начиная с j = r, последовательно уменьшаем значение. j на

 

единицу, пока не будет найден элемент aj такой, что x > aj.

 

Если для найденных элементов a и aj выполняется условие i £ j, то

 

эти элементы в рабочем массиве меняются местами.

 

Ясно, что описанная процедура закончится нахождением главного

 

элемента и разделением массива на две части: одна часть будет содер-

 

жать элементы, меньшие x, а другая — большие x.

 

Далее для каждой такой части вновь применяется описанная выше

 

процедура.

i
i
i
i


 

Паскаль-программа, реализующая данный алгоритм для 10-эле-

 

ментного массива, имеет вид

 

Program Q_sort; const

N=10; var

a:array[1..N] of integer; (* исходный массив *) k:integer;

 

 

procedure QuicksortA,r:integer); (* Процедура быстрой сортировки *) var i,j,x,y: integer;

begin

i:= 1; j:= r;

x:= a[(1 + r) div 2]; 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);

(* Рекурсивное использование процедуры Quicksort *) if (1<j) then Quicksort (1, j);

if (i<r) then Quicksort(i,r); end;

 

 

begin

writeln('Введите',N,'элементов массива:'); for k:=l to N do readln(a[k]); Quicksort(1,N);

(* на входе левая и правая граница сортировки *) writeln('После сортировки: ');

for k:=l to N do write(a[k],1 '); end.


 

Лекция 7

 


Дата добавления: 2015-11-16; просмотров: 70 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Квадратичная выборка| Основные определения

mybiblioteka.su - 2015-2024 год. (0.01 сек.)