Поскольку k
, по-видимому, должно быть довольно маленьким, сортировка вставкой, вероятно, является наиболее очевидным и общепринятым алгоритмом.
При вставке сортировки по случайным элементам вам нужно сканировать N элементов, и вы должны перемещать каждое из них в среднем по N / 2 позициям, что дает ~ N * N / 2 всего операций. Константа "/ 2" игнорируется в характеристике big-O (или аналогичной), что приводит к сложности O (N 2 ).
В случае, если вы предлагаете, ожидаемое число операций составляет ~ N * K / 2 - но поскольку k
является константой, весь член k/2
игнорируется в характеристике big-O, поэтому общая сложность O (N).