
43. Быстрая сортировка.
Среднее время работы O(n log n) . Время работы алгоритма для массива из n элементов в худшем случае может составить O(n2), на практике этот алгоритм является одним из самых быстрых.
Алгоритм:
1.из массива выбирается некоторый опорный элемент a[i]
2.запускается процедура разделения массива, которая перемещает все ключи, меньшие, либо равные a[i], влево от него, а все ключи, большие, либо равные a[i] — вправо.
3.для обоих подмассивов: если в подмассиве более двух элементов, рекурсивно запускаем для него ту же процедуру.
QuickSort(A,first, last)
1.If first<last then
2.Q<–Partition(A,first,last)
3.QuickSort(A,first, q)
4.QuickSort(A,q+1, last)
Partition
1.X<-A[first]
2.I<-first-1;
3.J<-last+1
4.While true do
5.Repeat j<-j-1
6.untilA[j]=<x
7.Repeat i<-i+1
8.untilA[j]>=x
9.if i<j then A[i}<–>A[j]
10.else rerurn j;