Radix Sort реализована на младших битах - PullRequest
0 голосов
/ 10 октября 2019

Я изучал CS в свое свободное время, и недавно я изучал алгоритмы. Недавно я начал изучать сортировку по основанию, и одна из практических «проблем», которую я обнаружил, заключалась в реализации сортировки по основанию на основе битов младшего разряда. Таким образом, в основном это функция с параметром i, который является числом битов, по которому вы хотите отсортировать.

Моя идея для решения этой проблемы:

Шаг 1: Создать битовую маску на основе количествабиты, которые вы хотите отсортировать. Например, если вы хотите отсортировать по 3 битам, соответствующую битовую маску = 2 ^ 3 - 1 = 7. Шаг 2. Разделите 32-битное слово на i j-битные интервалы. Например, 8 4-битных интервалов. Шаг 3: Для каждого элемента в массиве приведите его к целому без знака и выполните логическое И с битовой маской. Как только это будет сделано, извлеките первые 4 бита, используя другую битовую маску (в данном случае 15). Шаг 4. Выполните сортировку подсчета. Поскольку вы имеете дело с 4-битными значениями, ваш массив должен содержать только 16 элементов. Шаг 5: Повторите шаги 3 и 4 для 7 оставшихся групп по 4 бита. Например, чтобы извлечь вторые четыре бита, сдвиньте вправо 4 бита и затем используйте битовую маску.

Однако я изо всех сил стараюсь реализовать это, поскольку я не знаю, с чего начать. Если бы кто-то мог помочь мне начать работу и решить эту проблему, я был бы признателен.

...