|
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
|
Битовая сортировка!30.03.2012, 02:55. Показов 7852. Ответов 6
Метки нет (Все метки)
Всем привет. Нужно написать реферат по теме "Битовая сортировка".
Такого в инете, а также Википедиях и прочих джерелах даже примерно не удалось найти. Находил что то подобное с "Карманная сортировка" или "Поразрядная сортировка". Но там информация насчет десятичной системы числения, а меня интересует ТОЛЬКО битовая, т.е. двоичная система числения. Примерный алгоритм: береться два кармана, или что то такое. Все числа из входной последовательности представляем в двоичном виде(проще говоря переводим из СЧ10 в СЧ2). Потом берем 1 число из входной последовательности, и смотрим на его младший(по другому - самый правый) разряд. Если там 0, то бросаем в 1 карман, если 1 - в второй карман. И так через всю последовательность, учитывая что ставиться числа в карман должны строго по порядку. В итоге получим два кармана с данными. Потом в ряд записываем сначало первый(там где местяться числа с 0 вконце), а потом и второй карман(с 1 вконце), но так же строго сохраняем порядок розмещений чисел в карманах. После этого делаем зсув вправо на 1 символ для ВСЕХ чисел. и начинаем распределять по карманах сначала, но нужно делать распределение уже по числам из полученной последовательности. и ставить в первый карман числа с 0, во второй - с единицей в младшем розряде, но также надо строго сохранять порядок. и так повторяем столько раз, сколько имеет розрядов самое большой число их входной последовательности Алгоритм работы я знаю, но мне нужна какая то инфа, и чем больше тем лучше. И лучше что б был какойто пример на С или С++. P.S. И сразу вопрос: мне препод говорил, что в С/С++ есть команды, которые делают смещения вправо. Но я об таком нигде не слышал, и нигде не находил. Можете подсказать насчет этих команд?
0
|
|
| 30.03.2012, 02:55 | |
|
Ответы с готовыми решениями:
6
Битовая операция ->
|
|
53 / 53 / 19
Регистрация: 10.03.2012
Сообщений: 138
|
|||||||
| 30.03.2012, 04:54 | |||||||
|
Один из вариантов реализации:
1
|
|||||||
|
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
||||||
| 30.03.2012, 18:37 [ТС] | ||||||
|
за пример и ф-ию огромное спасибо. А есть какая то инфа в виде теории? ибо на реферат надо хотя би 2 листа А4 по этому методу. Сойдет или книга или на сайте. Искал много часов, но теории в инете не нашел ((
Добавлено через 5 часов 47 минут
0
|
||||||
|
53 / 53 / 19
Регистрация: 10.03.2012
Сообщений: 138
|
||||||
| 30.03.2012, 19:27 | ||||||
Если у нас было x нулей, то они все числа с единицей на рассматриваемом бите будут располагаться на позициях 1..x. Если же у нас есть k единиц, то числа с единицей будут располагаться на позициях x+1..x+k. Таким образом мы ставим правую границу расположения элемента с определенной цифрой. А потом пробегаемся и расставляем на нужную позицию. Вот ещё пример. Есть числа в битовом представлении: 101 100 001. Подсчитаем правые границы - 1, 3(1 + 2). Текущий бит числа 101 - 1. Поэтому ставим его на позицию 3 и уменьшаем правую границу этой цифры: . . 101 границы - 1, 2 Далее расставляем 100 100 . 101 границы - 0 2 И наконец 001 100 001 101. И так далее до самого левого бита.
2
|
||||||
|
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
|
| 30.03.2012, 23:12 [ТС] | |
|
скажи пжл, как и где в проге ты делал перевод из 10 СЧ в двуичную систему числения...
0
|
|
|
53 / 53 / 19
Регистрация: 10.03.2012
Сообщений: 138
|
|
| 31.03.2012, 05:06 | |
|
digit(x, i) получает i-ый бит числа x(для простоты, будем считать, что нумерация битов с нуля). Вообщем, она работает так:
Пусть есть число 01101(в двоичном виде). Мы выполняем сдвиг вправо на i. Пусть i = 2. 01101 >> 2 = 011(вышло за границу 01, теперь их больше нет). Выполнив логическое "и" с единицей мы можем получить нужный нам бит 011 & 001 = 1 010 & 001 = 0(ещё пример) Вот таким образом работает digit. Переводить же руками число в двоичную систему счисления не надо. Потому что мы выполняем битовые операции, которые и так на этой системе счисления выполняются
1
|
|
|
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
|
| 31.03.2012, 11:47 [ТС] | |
|
спасибо за обяснение, не знал такого!
0
|
|
| 31.03.2012, 11:47 | |
|
Помогаю со студенческими работами здесь
7
64-битовая строка битовая маска битовая маска С, битовая запись
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|