
44. Быстрая двоичная сортировка.
Бинарная быстрая сортировка по старшему разряду. На каждом уровне рекурсии рассматриваем старший бит из еще нерассмотренных. Числа с нулевым битом - в левую часть подмассива, с единичным - в правую.
Закончили - делаем то же самое со след. битом в каждом из подмассивов.
Алгоритм:
1.последовательно вставляем элементы исходно массива в БДП
2.выполняем симметричный обход сформированного дерева 3. при посещении узлов – копируем содержимое в выходной массив Время работы алгоритма:
O(log2n) – лучший; O(n) – худший; O(nlog2n) – вставок элементов. Минус – повышенные требования к объему памяти.
Алгоритм Sort(A[1..n, first, last,d)
1.if (first<last) and (d>0) then
2.I <- first-1
3.J<-last+1
4.While i<j do
5.Repeat j<-j-1
6.Until ((digit(A[i],d)=0) or (j<=i)
7.Repeat i<-i+1
8.Until ((digit(A[i],d)=1) or (i>=j)
9.If i<j then A[i]<->A[j]
10.End while
11.SortB(A[1..n], first,j,d-1)
12.SortB(a[1..n],j+1,last,d+1)
13.End if