[Оглавление] | [<< страница] | [>>страница] |
4. Поразрядная («карманная») сортировка
Рассмотренные выше методы обеспечивали сортировку на месте, без использования дополнительной памяти для размещения сортируемых массивов. Имеются также методы сортировки, использующие дополнительные массивы. К ним относятся методы поразрядной сортировки и методы сортировки слиянием.
Алгоритмы поразрядной сортировки рассматривают ключи сортируемых элементов как числа с основанием R и работают с отдельными цифрами чисел. При побайтовом рассмотрении ключей, если ключами являются десятичные числа, то R = 10, при сим-ольных ключах R = 128 или R = 256. При побитовом рассмотрении ключей R = 2.
Алгоритм поразрядной сортировки заключается в том, что при очередном проходе элементы исходного массива помещаются в R массивов (раскладываются по R «карманам») в зависимости от значения младшей цифры ключа. При R = 10, ключи начинающиеся с 0, окажутся в первом массиве, начинающие с 1, — во втором массиве и т.д., т.е. потребуется 10 дополнительных массивов «карманов». Далее данные, находящиеся в каждом «кармане», раскладываются по значениям второй цифры и т.д., пока не будут рассмотрены все цифры ключей. Очевидно, что сколько бы проходов ни сделали, общее число сортируемых элементов остается постоянным, а «карманы» будут содержать разное количество элементов. Поэтому одного дополнительного массива того же размера, что и исходный, было бы достаточно, и в нем можно было бы разместить все «карманы». Однако размеры «карманов» определяются только в процессе очередного прохода, поэтом, видимо, наиболее подходящим способом реализации «карманов» будет применение цепных списков, а не массива.
[Оглавление] | [<<страница] | [>>страница] | [В начало ] |