Сортировка слиянием для простого числа элементов?
Насколько я знаю, в сортировке слиянием мы должны разделить элементы на несколько групп. Но если число - простые числа, то как возможно деление? Делим ли мы их на неравные группы? Если вы собираетесь представить реализацию, пожалуйста, сделайте это на C или Python.
3 ответа
Сортировка слиянием не требует разделения списка на группы одинакового размера. В любом правильно написанном коде слияния не должно иметь никакого значения, если группы имеют немного разные размеры.
Вы обычно хотите, чтобы они были близки к одному и тому же размеру (чтобы разделить усилия равномерно, уменьшая сложность сортировки), но даже это не является строго необходимым. Основной алгоритм сортировки слиянием будет работать, даже если вы разделите последовательность длины N на подпоследовательности длины 1 и длины (N-1) (хотя производительность будет паршивой).
Скажем, есть 2k + 1, он будет разделен на две части, k и k + 1
Элементы не обязательно разделяются равномерно, но если у каждой группы будет как можно меньше элементов, это приведет к наименьшей общей сложности.
Это общий принцип для m-way сортировки слиянием, где m обозначает количество групп, которые вы собираетесь иметь.