Форум программистов, компьютерный форум CyberForum.ru

Битовая сортировка - C++

Восстановить пароль Регистрация
 
zewer
 Аватар для zewer
1018 / 709 / 71
Регистрация: 07.01.2011
Сообщений: 5,346
23.04.2012, 02:09     Битовая сортировка #1
Всем привет, у меня есть прога по битовой сортировке, но я практически не понимаю каким чудом эта прога сортирует елементи. Мы изучали что надо по биту делить числа на два кармана...
а здесь как то вобше не так, может кто то помочь с пониманием, и закоментить рядки проги в алгоритме?

ф-ия дигит мне ясна:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
using namespace std;
 
int a[100], b[100], n;
 
int digit(int n, int p)
{
    return (n >> p & 1);
}
int main()
{
    setlocale (LC_ALL,"Ukrainian");
    int m = 0;
    cout << "Введiть кiлькiсть елементiв у вхiднiй послiдовностi: ";
    cin >> n;//вводимо кількість елементів у вхідній послідовності
    cout << "\n";
    for (int i = 0; i < n; i++)
    {
        cout << "Введiть " << i+1 << " елемент послiдовностi: ";
        cin >> a[i];//вводимо елементи вхідної послідовності
    }
    int k = sizeof(int);
    k = k*8;
    for(int i = 0; i < k; i++)
    {
        for(int k = 0; k < n; k++)
            cout << a[k] << " ";
        cout << "\n";
 
        int c[2] = {0};
        for(int j = 0; j < n; j++)
            c[digit(a[j],i)]++;
        for(int j = 1; j < 2; j++)
            c[j] += c[j - 1];
        for(int j = n - 1; j > -1;j--)
        {
            b[--c[digit(a[j],i)]] = a[j];
            m++;
        }
        for(int j = 0; j < n; j++)
            a[j] = b[j];
    }
    cout << "Вiдсортована послiдовнiсть: ";
    for(int i = 0; i < n; i++)
        cout << a[i] << " ";
    cout << "\n";
    return 0;
}
Добавлено через 2 часа 5 минут
уже помощь не требуеться, сам переписал алгоритм сортировки))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 02:09     Битовая сортировка
Посмотрите здесь:

C++ битовая маска
Битовая операция -> C++
Битовая сортировка! C++
C++ битовая маска
64-битовая строка C++
C++ Битовая арифметика
С, битовая запись C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru