На ум приходит дискретное преобразование Фурье;если бы он применялся следующим образом, он был бы немонотонным (и прерывистым):
if is_power_of_2(len(data)):
return fft(data)
return dft(data)
, поскольку dft работает в O (N ** 2), а fft работает в O (N log N).
При разработке алгоритма можно было бы найти способ дополнить входные данные, чтобы удалить немонотонное поведение (т. Е. Ускорить меньшие входные данные), как это обычно делается с fft.