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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ одномерные массивы http://www.cyberforum.ru/cpp-beginners/thread87381.html
в одномерном массиве, состоящем из n вещественных элементов, вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами. упорядочить элементы массива по возрастанию
C++ Многомерный массив, Си!!! Дан массив целых чисел a. Изменить индексацию массива на a http://www.cyberforum.ru/cpp-beginners/thread87379.html
C++ Распечатать значения от 1! До n! в одну строчку
Ввести с клавиатуры целое число n<10 вычислить n! Распечатать значения от 1! До n! В одну строчку
C++ Бот для сапера.
Хочу написать бот для сапера. Как нужно дейстовать? перехватом WinAPI?
C++ Написать программу, которая переделывает введенное с клавиатуры двуразрядное 16иричное в десятичное http://www.cyberforum.ru/cpp-beginners/thread87337.html
Написать программу, которая переделывает введенное с клавиатуры двуразрядное 16иричное в десятичное
C++ Не удается переместить файл... Всех приветствую! В общем, задача банальнейшая, но мне с ней никак не удается справиться: проверять определенный файл на диске и если он больше определенного размера, то перемещать его в определенное место. С размером все нормально, получаю, но вот перемещение абсолютно никак не работает. #include<stdio.h> #include<conio.h> #include<windows.h> #define MAX 100 #include <dir.h> подробнее

Показать сообщение отдельно
octo96
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 21
19.01.2010, 12:35     Побитовая сортировка массива
Составте коментарий к етой програме пожалуста
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());
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru