Лет 12 назад, когда я учился в школе, учитель дал задание составить программу сортировки. А мы еще меж собой решили посоревноваться кто как выпендрится. Было несколько способов "пузырек" или там какой-нить метод Крамника-Кашпировского Я сказал что написал программу в одну строку (может две точно не помню). В Фокале (аналог Бейсика) можно было несколько команд в одну строку писать, но строка ограниченна по длине и если использовать условный переход, прога могла распасца на несколько строк.
После демонстрации программы, мне сказали что такой метод, методом сортировки не является, и вообще это все лженаучно.
Томить не буду ниже приводиться описание алгоритма.
\/
\/
\/
\/
\/
\/
\/
\/
\/
\/
\/
\/
\/
\/
Допустим надо отсортировать числа от 1 до 100. Язык уже совсем не помню, но поробую изобразить:
// Создаем пустой масссив
m[100] = 0;
// В цикле спрашиваем у пользователя 10 чисел для сортировки
for( i=1, 10); ask N; m[n] = 1; endfоr;
// Выводим их отсортированными
for( i=1, 100); if( m[i] > 0) print(i); endif; endfor;
PLU>// Создаем пустой масссив PLU>m[100] = 0; PLU>// В цикле спрашиваем у пользователя 10 чисел для сортировки PLU>for( i=1, 10); ask N; m[n] = 1; endfоr; PLU>// Выводим их отсортированными PLU>for( i=1, 100); if( m[i] > 0) print(i); endif; endfor;
PLU>Интересно, такой метод как-нибудь называется?
не знаю, называется или нет, но это распространенный прием сортировки объектов с ограниченно малым размером множества объектов (как сожно меньшим чем размер массива объектов).
и это совсем не жульничество, а искусный прием.
но в вашем случае есть возражения: используете памяти больше, чем сам сортируемый массив.
этот метод называется методом проецирования. в "Программисте" (нане покойном) то ли в февральском то ли в январском номере в статье Криса Касперски упоминался как раз этот прием.
Здравствуйте, ilnar, Вы писали:
I>но в вашем случае есть возражения: используете памяти больше, чем сам сортируемый массив.
Всякая метода чем-нибудь да страдает, однако этот алгорим можно без труда переделать так чтоб отсортировывались еще и повторяющиеся числа, и массив заранее оптимально ограничить.
Здравствуйте, PLUS, Вы писали:
... PLU>Томить не буду ниже приводиться описание алгоритма.
... PLU>// Создаем пустой масссив PLU>m[100] = 0; PLU>// В цикле спрашиваем у пользователя 10 чисел для сортировки PLU>for( i=1, 10); ask N; m[n] = 1; endfоr; PLU>// Выводим их отсортированными PLU>for( i=1, 100); if( m[i] > 0) print(i); endif; endfor;
PLU>Интересно, такой метод как-нибудь называется?
Интерпретаций может быть несколько.
Вот ещё одна: сортировка с использованием хэш-таблиц.
И как частный случай, хэш от значения совпадает с самим
значением. Так что это вполне законный метод.
Здравствуйте, PLUS, Вы писали:
PLU>Здравствуйте, ilnar, Вы писали:
I>но в вашем случае есть возражения: используете памяти больше, чем сам сортируемый массив.
PLU>Всякая метода чем-нибудь да страдает, однако этот алгорим можно без труда переделать так чтоб отсортировывались еще и повторяющиеся числа, и массив заранее оптимально ограничить.
не спорю, что можно, в этих случаях этот метод и хорош, НО ДО — нет