24.04.2021
Bit-bit tartibida
saralash - Vikipediya
https://translate.google.com/translate?sl=ru&tl=uz&u=https://ru.wikipedia.org/wiki/%25D0%259F%25D0%25BE%25D1%2580%25D0%25B0%25…
1/3
Bit-bit tartibida saralash
Sahifaning amaldagi versiyasi hali tajribali ishtirokchilar
tomonidan ko'rib chiqilmagan
va 2019 yil 13 martda ko'rib
chiqilgan
versiyadan
sezilarli farq qilishi mumkin . cheklar
10 ta tahrir
qilishni talab
qiladi
.
Radix saralash (
ing.
Radix sort ) - chiziqli vaqt ichida bajariladigan
saralash algoritmi
. Bor
barqaror
imkoniyatlari.
Agar mavjud
wikibook
mavzusida "
saralash kaftidan amalga oshirish
Misollar
"
Dastlab raqamlarda yozilgan butun sonlarni saralash uchun mo'ljallangan. Ammo kompyuterlar
xotirasida har qanday ma'lumot butun sonlarda yozilganligi sababli, algoritm har qanday
moslamalarni saralash uchun mos keladi, ularning yozilishini taqqoslanadigan qiymatlarni o'z
ichiga olgan "bit" larga bo'lish mumkin. Masalan, siz bu tarzda nafaqat raqamlar to'plami
sifatida
yozilgan raqamlarni, balki belgilar to'plami bo'lgan satrlarni va umuman, baytlar to'plami sifatida
ifodalangan xotiradagi ixtiyoriy qiymatlarni ham saralashingiz mumkin.
Taqqoslash bitma-bit amalga oshiriladi: birinchi navbatda bitta ekstremal bitning qiymatlari
taqqoslanadi va elementlar ushbu taqqoslash natijalariga ko'ra guruhlanadi, so'ngra keyingi
bitning qo'shni
qiymatlari taqqoslanadi , va elementlar yoki oldingi bitishda hosil bo'lgan
guruhlar ichidagi ushbu bitning qiymatlarini taqqoslash natijalariga ko'ra tartiblangan yoki ular
bir butun sifatida qayta tartiblangan, ammo oldingi tartibda erishilgan nisbiy tartibni saqlagan
holda. Keyin xuddi shu narsa keyingi bo'shatish uchun ham amalga oshiriladi va oxirigacha
davom etadi.
Bit-bit tartibida saralash
Muallif
Xollerit, Xerman
Maqsad
Saralash algoritmi
Ma'lumotlar tarkibi
Array
Eng yomon vaqt
bu erda w - har bir tugmachani saqlash
uchun zarur bo'lgan bitlar soni.
Xotira narxi
Algoritm
24.04.2021
Bit-bit tartibida saralash - Vikipediya
https://translate.google.com/translate?sl=ru&tl=uz&u=https://ru.wikipedia.org/wiki/%25D0%259F%25D0%25BE%25D1%2580%25D0%25B0%25…
2/3
Taqqoslangan yozuvlarni bir-biriga nisbatan turli yo'nalishlarda moslashtirish
mumkinligi sababli,
amalda bu tartiblashning ikkita varianti mavjud. Raqamlar uchun ular raqamlar sonining
ahamiyati jihatidan chaqiriladi va shunday bo'ladi: siz raqamlarni kamroq ahamiyatli raqamlar
yo'nalishida (o'ng tomonda, unchalik ahamiyatsiz tomonlarga) tekislashingiz mumkin raqam,
LSD) yoki undan muhimroq raqamlar (chap tomonda, yon tomonda eng muhim raqam, MSD).
LSD-ni saralash (bitdan, bittadan bitgacha ajratish) raqamlarga mos tartibni keltirib chiqaradi.
Masalan: 1, 2, 9, 10, 21, 100, 200, 201, 202, 210. Ya'ni, bu erda qiymatlar avval birliklar bo'yicha
saralanadi, keyin o'nlab saralanadi, o'nlik ichidagi birliklar bo'yicha tartiblanadi. yuzlab, o'nlab va
birliklar yuzlab tartiblangan holda saqlanadi va hokazo.
MSD-ni saralash (MSD-hizalanmış, chapga tekislangan) natijada matn satrlarini saralash uchun
mos keladigan alifbo tartibida bo'ladi. Masalan, "b, c, d, e, f, g, h, i, j, ba" "b, ba, c, d, e, f, g, h, i, j"
sifatida tartiblangan bo'lar edi. Agar MSD misolda ko'rsatilgan raqamlarga qo'llanilsa, biz 1, 10,
100, 2, 200, 201, 202, 21, 210, 9 ketma-ketligini olamiz.
Накапливать при каждом проходе сведения о группах можно разными способами —
например в списках, в
деревьях, в массивах, выписывая в них либо сами элементы, либо их
индексы и т. п.
Существует нестабильный вариант рекурсивной побитовой сортировки, выполняющейся
непосредственно в сортируемом массиве: на первом проходе движение идёт навстречу
друг другу, в начале массива ищется элемент с 1 в
первом битовом разряде, в конце
массива ищется элемент с 0 в том же разряде. Найденные элементы меняются местами, и
так до тех пор, пока рассматриваемые индексы не встретятся. Таким образом в начале
массива, до места встречи индексов, собираются все элементы с битом равным 0, а после
этого индекса — все элементы с равным 1. Далее
рекурсивно можно полностью
аналогично перебрать получившиеся поддиапазоны массива, сравнивая значения второго
и последующих разрядов, и переставляя элементы местами.
Для сортировки по очередному разряду может применяться
корзинная сортировка
.
Каждый разряд проходится по два раза. На первом проходе подсчитывается количество тех
или иных значений в этом разряде. Затем для
каждого возможного значения
подготавливаются массивы для хранения элементов с этим значением. При втором
проходе выписываются сами элементы в эти массивы. Эффективная реализация возможна
при использовании массива ссылок на строки вместо самих строк, и дополнительного
массива «размеров корзин», инициализируемого при первом проходе числом элементов в
каждой «корзине».
Применение для строк в варианте с корзинной сортировкой
24.04.2021
Bit-bit tartibida saralash - Vikipediya
https://translate.google.com/translate?sl=ru&tl=uz&u=https://ru.wikipedia.org/wiki/%25D0%259F%25D0%25BE%25D1%2580%25D0%25B0%25…
3/3
Второй и последующие проходы выполняются
отдельно над каждой корзиной, полученной
на предыдущем проходе, с делением её на «подкорзины» и сравнением соответственно
второго и последующих символов строк.
Операция завершается при достижении максимальной длины строки или когда все
«подкорзины» получили длину 1.
Дональд Кнут
. Искусство программирования, том 3. Сортировка и поиск = The Art of
Computer
Programming, vol.3. Sorting and Searching. — 2-е изд. — М.:
«Вильямс»
, 2007. —
С. 192—201. —
ISBN 5-8459-0082-4
.
Визуализатор1
— Java-аплет.
Визуализатор2
— Java-аплет.
Реализация алгоритма на C++
.
Примечания
Этот раздел статьи ещё не написан.
Узнать больше
Литература
Ссылки
Для улучшения этой статьи желательно:
Узнать больше