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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
octo96
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 21
#1

Побитовая сортировка массива - C++

19.01.2010, 12:35. Просмотров 1099. Ответов 2
Метки нет (Все метки)

Составте коментарий к етой програме пожалуста
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
struct el
{
   int val;
   el*next,*prev;
};
struct stack 
{
   el*cur,*mass;
   int n,stackempty;
   stack();
   insert(int);
   release();
   reverserelease();
};
stack::stack() 
{
   n=0;
   cur=mass=NULL;
   stackempty=1;
}
stack::reverserelease() 
{
   int ret;
   if(n==0)
       return 0;
   ret=mass->val;
   if(mass->next!=NULL){
       mass=mass->next;
       delete mass->prev;
   }
   else
       delete mass;
   n--;
   if(n==0)
       stackempty=1;
   return ret;
}
stack::release()
{
   int ret;
   if(n==0)
       return 0;
   ret=cur->val;
   cur=cur->prev;
   if(cur==NULL)
       delete mass;
   else
       delete cur->next;
   n--;
   if(n==0)
       stackempty=1;
   return ret;
}
stack::insert(int ins)
{
   stackempty=0;
   if(n==0){
       mass=new el;
       mass->prev=NULL;
       mass->next=NULL;
       mass->val=ins;
       cur=mass;
       n++;
       return 0;
   }
   cur->next=new el; 
   cur->next->prev=cur; 
   cur->next->next=NULL; 
   cur->next->val=ins; 
   cur=cur->next; 
   n++;
   return 0; 
}
{
   int i,j,k,step;
   int bit,cbit;
   switch(base)
   {
       case 2: step=1; break; 
       case 4: step=2; break; 
       case 8: step=3; break; 
       case 16: step=4; break; 
       case 32: step=5; break; 
       case 512: step=9; break; 
       case 65536: step=16; break; 
       default: 
       printf("Error in sorting base: %d",base); 
       return; 
   }
 
   stack*st=new stack[base];
   for(i=0;i<sizeof(int)*8;i=i+step)
   { 
       cbit=(base-1)<<i;
       for(j=0;j<len;j++)
       {
           bit=p[numb[j]]&cbit;
           bit=bit>>i;
           st[bit].insert(numb[j]);
       }
       k=0; 
 
 
       for(j=0;j<base;j++)
       {
            while(!st[j].stackempty)
            {
                numb[k]=st[j].reverserelease();
                k++;
            }
        }
       if(k!=len)
       { 
           printf("Error occured while sorting array");
           return; 
       }
   }
delete st; 
}
void main()
{
    system("cls");
    int z = 0;
    int *p, *sorted, n = 0, i = 0, j = 0;
    stack st;
    unsigned int n_el = 0, max = 1024;
    clock_t start = 0,end = 0;
    float t1 = 0;
 
    n = 10;
    p = new int[n]; 
    sorted = new int[n];
    srand((unsigned int)time(0l));
    for(i = 0; i < n; i++)
    {
        p[i] = rand();
        sorted[i] = i;
    }
    for(i = 0; i < n; i++)
    {
        printf("%d\r\n",p[sorted[i]]);
    }
 
    printf("Press any key to begin sorting\r\n");
    getch();
    start = clock(); 
    bitsort(p, sorted, n, 512); 
    end=clock(); 
 
    t1 = (float)(end-start) ;
    printf("%lf\n",t1); 
   for(i = 0; i < n; i++)
    {
        printf("%d\r\n",p[sorted[i]]);
    }
 
    delete p;
    delete sorted;
    printf("Press any key to continue");
    while (!_getch());
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 12:35     Побитовая сортировка массива
Посмотрите здесь:

Побитовая инверсия - C++
Почему выводит 13? int y = -14; cout &lt;&lt; ~y;

побитовая операция - C++
Вычислить, объяснить результат выражения, используя поразрядные операции, для заданных значений целых переменных a, b, c. a+b*c a = 1,...

побитовая операция | - C++
есть 3 матрицы : float **M,**M1,**M2; нужно выполнить for(i=0;i&lt;n;i++) { for(j=0;j&lt;m;j++) {

Побитовая операция & - C++
Даны два массива с числами в десятичной системе счисления, разделенные пробелами. Нужно реализовать побитовую операцию &amp; сравнивающую...

Бинарная(побитовая) операция - C++
Мне нужно написать функцию которая проверяет значение есть парным или нет bool IsEven(unsigned number) { return ((number | 0 &lt;&lt; 0)...

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

побитовая запись в файл - C++
можно ли записать отдельный бит в файл?

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

Побитовая операция & - C++
Скажите пожалуста, что значит эта запись , и как записать в другом варианте? ... int x=5; while (x &amp; 1) {....

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

Побитовое увеличение числа на 1 и побитовая проверка на равенство - C++
Здравствуйте,подскажите как побитово( с помощью битовых операций) увеличить число на один и как побитово проверить два числа на равенство?

Дополнительно перегрузить логическую операторную функцию для операции | (побитовая дизъюнкция), определяющую параллельность двух отрезков - C++
Собственно все задание Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
19.01.2010, 16:05     Побитовая сортировка массива #2
Цитата Сообщение от octo96 Посмотреть сообщение
Составте коментарий к етой програме пожалуста
комментарий: программа так себе, можно было бы и получше написать.
octo96
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 21
19.01.2010, 16:43  [ТС]     Побитовая сортировка массива #3
Цитата Сообщение от zim22 Посмотреть сообщение
комментарий: программа так себе, можно было бы и получше написать.
Ну можеш и лутше если хочеш, мне и етой дочтаточно.
Yandex
Объявления
19.01.2010, 16:43     Побитовая сортировка массива
Ответ Создать тему
Опции темы

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