Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vova287
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 5
#1

Поразрядная сортировка - C++

17.12.2011, 21:02. Просмотров 667. Ответов 0
Метки нет (Все метки)

Доброе время суток, написал программу поразрядной сортировки по определенному критерию должно сортировать, проблем в логике вроде бы не должно быть, но вот проблема в функции yy в том что не хватает выделения памяти для mask. даже при присвоение типа unsigned long long выходит за предел . Подскажите в чем причина и как с ней бороться
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
// количество бит для сортировки
#define POINTER_BITSIZE 32
 
void print(int **a, int size, int j = -1, char ch = '|')
{
    if (j != -1) cout << "j = " << j << endl;
    for (int i = POINTER_BITSIZE; i > 0; i--)
        cout << (i - 1) / 10;
    cout << endl;
    for (int i = POINTER_BITSIZE; i > 0; i--)
        cout << (i - 1) % 10;
    cout << endl;
    for (int i = POINTER_BITSIZE - 1; i > j; i--)
        cout << " ";
    if (j != -1) cout << ch;
    cout << endl;
    for (int i = 0; i < size; i++)
    {
        for (int j = POINTER_BITSIZE - 1; j >= 0; j--)
            cout << (((unsigned int)a[i] >> j) & 1);
        cout.width(15);
        cout << (unsigned int)a[i] << endl;
    }
    getchar();
}
 
int yy (int * AA, int * BB)
{
    int sizeOf = sizeof(*AA)*8;
    
     int first = 1;
     int * mask = new int [sizeOf];
     int * direct = new int [sizeOf];
    if (first)
    {
        first = 0;
        for (unsigned long i=0, bit=0, bitStep=2, bitIndex = 0; i<sizeOf; i++)
        {
            mask[i] = 1 << bit;
            direct[i] = (bitIndex%2 == 0) ? 1 : -1;
            bitIndex++;
            if ((bit + bitStep < sizeOf) && !(bit + bitStep < 0)) bit += bitStep;
            else
            {
                bit += bitStep - 1;
                bitStep = -bitStep;
            }
        }
    }
    
    int A = *AA, B = *BB;
    for (int i=0; i<sizeOf; i++)
    {
        printf("%i\n", mask[i]);
        int a = A & mask[i], b = B & mask[i];
        if (a == b) return 0;
        else return direct[i];
    }
}
 
int ** XXXsort(int ** a, int size)
{
    vector<int *> myvector (a, a+size);
    vector<int *>::iterator it;
    sort (myvector.begin(), myvector.end(), yy);
    int ** b = new int * [size];
    int i = 0;
    for (it=myvector.begin(); it!=myvector.end(); it++) b[i++] = (*it);
    return b;    
}
 
 
int main()
{
    
    int size;
    char k;
    cout << "input size"<<"\n";
    cin >> size;
    
    int **a = new int * [size];
    cout << "input by hand"<<"\n";
    cin>>k;
        if (tolower(k) == 'y')
            {
                for (int i = 0; i < size; i++)
                    {
                        int x;
                        cin >> x;
                        a[i] = (int *)x;
                    }
            }
        else 
            {
                for (int i = 0; i < size; i++)
                a[i] = (int *)rand();
            
            }
 
    cout << "before sort:" << endl;
    print(a, size);
    int ** b = XXXsort(a, size);
    delete [] a;
    cout << "after sort:" << endl;
    print(b, size);
    delete [] b;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 21:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поразрядная сортировка (C++):

Поразрядная сортировка - C++
Необходимо реализовать метод поразрядной сортировки. Нужно отсортировать последовательность так, что бы она была отсортирована в порядке...

Поразрядная сортировка - C++
Помогите решить проблему с кодом #include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include...

Поразрядная сортировка - C++
Программа вылетает, не пойму почему? подскажите пожалуйста. #include &quot;iostream&quot; using namespace std; int n, col_razr=0; int...

Поразрядная сортировка - C++
Подскажите пожалуйста почему если ввести больше 100 элементов то код не работает? #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include...

Поразрядная сортировка MSD - C++
Поразрядная сортировка MSD , есть???

Поразрядная сортировка массива - C++
Дан массив двоичных чисел, нужно отсортировать его с помощью поразрядной сортировки, начиная со старшего разряда, функция должна быть...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 21:02
Привет! Вот еще темы с ответами:

Трехпутевая поразрядная быстрая сортировка - C++
нужна помощь с написанием програмки на тему: Трехпутевая поразрядная быстрая сортировка заранее спасибо

Поразрядная сортировка и его недостатки - C++
Собствено сабж в &quot;плохости&quot; поразрядной сортировки. Ведь, если она отрабатывает за линейное время и не требует спец. аппаратной поддержки,...

Обменная поразрядная сортировка масива - C++
Помогите пожалуйста исправить код, у меня сортируется массив только по старшему биту как сделать что бы сортировалось по остальным битам...

Поразрядная сортировка символьных массивов - C++
Всем привет! Кто нибудь может показать пример кода, для поразрядной сортировки символьных массивов, с числовыми массивами разобрался, а с ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru