Хорошо, что это второй раз, когда я получил упражнение, где мне нужно определить (в данном случае речь идет о алгоритмах сортировки), сколько чисел я могу сортировать с помощью определенного алгоритма (на моем собственном компьютере), чтобы алгоритм работал ровно через минуту.Получение максимальных данных, которые может обрабатывать алгоритм за определенный промежуток времени
Это практическое упражнение, это означает, что я должен генерировать достаточно чисел, чтобы он работал так долго. Теперь я спрашиваю себя, так как у меня не было этой проблемы за все десять лет программирования: как я могу это сделать? Моя первая попытка была немного грубой, что привело к мгновенному StackOverflow.
Я мог бы создать массив (или несколько) и заполнить их случайными числами, но определить, сколько из них закончится за одну минуту, было бы ужасной долгой задачей, так как вам всегда нужно было ждать.
Что я могу сделать, чтобы эффективно узнать об этом? Измеряя разницу между, скажем, 10 и 20 числами, и подсчитайте, сколько потребуется, чтобы заполнить минуту? Звучит просто, но алгоритмы (особенно алгоритмы сортировки) редко линейны.
Простым способом было бы удвоить размер, пока вы не получите время работы более одной минуты а затем выполнить двоичный поиск на конечном интервале. Если вы знаете временную сложность измеренного алгоритма, можно удвоить и сократить вдвое шаг двоичного поиска. –