0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 21
1

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

19.01.2010, 12:35. Показов 1672. Ответов 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());
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2010, 12:35
Ответы с готовыми решениями:

Побитовая сортировка массива
Задача: с клавиатуры ввести массив размера num целых чисел. Используя проверку i-ый бит = 1 и i-ый...

Хаффман- побитовая запись в файл. ПОБИТОВАЯ=)
Снова хаффман...помогите придумать как побитово вести запись в файл,ведь коды хаффмана не равны...

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

Побитовая упаковка
При написании одной проги возникла проблема упаковки бит for (int i=0;i&lt;sizeof(mas);) { int...

2
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
19.01.2010, 16:05 2
Цитата Сообщение от octo96 Посмотреть сообщение
Составте коментарий к етой програме пожалуста
комментарий: программа так себе, можно было бы и получше написать.
0
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 21
19.01.2010, 16:43  [ТС] 3
Цитата Сообщение от zim22 Посмотреть сообщение
комментарий: программа так себе, можно было бы и получше написать.
Ну можеш и лутше если хочеш, мне и етой дочтаточно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2010, 16:43
Помогаю со студенческими работами здесь

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

Побитовая запись
Подска

побитовая операция
Вычислить, объяснить результат выражения, используя поразрядные операции, для заданных значений...

Побитовая запись в файл
Доброго времени суток. Может кто подсказать метод побитовой записи в файл. Все перерыл найти не...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru