
47. Сортировка подсчетом
Суть метода заключается в том, что на каждом шаге подсчитывается, в какую позицию результирующего массива B надо записать очередной элемент исходного массива A . Если некоторый элемент A[i] помещается в результирующий массив в позицию k + 1, то слева от B[k + 1] должны стоять элементы меньшие или равные B[k +1]. Значит, число k складывается из количества элементов меньших A[i] и, возможно, некоторого числа элементов, равных A[i]. Условимся, что из равных будут учитываться только те элементы, которые в исходном массиве стоят левее A[i]:
Алгоритм CountingSort(A[1..n],B[1..n])
1.For i=1 to n do C[i]<-0
2.For i=1 to n-1 do
3.For j=i+1 to n do
4.If A[i]>=A[j] then C[i]<-C[i]+1
5.Else C[j]<-C[j]+1
6.End for
7.End for
8.For i=1 to n do
9.B[C[i]+1]<-A[i]
10.Return B