Я нашел этот вопрос на одном сайте, посвященном алгоритму сортировки, и этот вопрос был упражнением! Я решил это, и я хочу знать, что это правильно?
Упражнение:
Использовать идею алгоритма подсчета сортировки и предоставить алгоритм с n целым числом в диапазоне от 0 до k, за время O (1) ответил, что сколько из этих n элементов находится в интервале [a, b]? Конечно, ваш алгоритм должен обрабатывать n элементов, которые могут помочь вам взять числа между a и b (0 ≤ a, b ≤ k). Этот базовый процесс должен быть вовремя Θ (n + k).
это мой алгоритм:
Algorithm Range(A,k,a,b)
{Consider C is the output array of PartOfCountingSort algorithm}
C<--PartOfCountingSort(A,k)
//finding the number of elements between a and b
numberOfElements<-- C[b]-C[a]+1
return numberOfElements
//end of the Range algorithm
------------------------------------
PartOfCountingSort(A,k) // Theta(n+k)
OutPut: array C is the output of this algorithm
for i<-- 1 to k
C[i]<-- 0
for j<-- 1 to A. length
C[A[j]]<--C[A[j]]+1
for i<--2 to k
C[i]<--C[i]+C[i-1]