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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Фирма http://www.cyberforum.ru/cpp-beginners/thread79887.html
В соответствии с вариантом задания, используя структурный тип данных, создать базу данных и организовать с ней работу, включая поиск нужной информации, ее корректировку (изменение значений полей структур, дозапись информации в файл или ее удаление), вывод информации на экран Автоматизировать работу фирмы, торгующей компьютерами
C++ Ожидание нажатия кнопки или пауза в выполнении цикла Есть цикл, внутри него несколько кейсов. Необходимо каким-то образом реализовать "поэтапное" прохождение case-ов внутри цикла. Ф-ия эмулирует работу машины Тьюринга. Например, цикл начал работу. q = 1, попадаем в case 1, там в "а". Далее наращиваем q и pos, прерываем и идем в самый низ, проверяем while (q != 99) и перемещаемся в case 2. Вот между перемещением в q2 необходимо сделать каким-либо... http://www.cyberforum.ru/cpp-beginners/thread79874.html
Работа со строками в С++ C++
Здравствуйте, вы бы не могли мне помочь решить такую задачу: Дана строка, представляющая предложение. Слова в предложении состоят из маленьких латинских букв. Между словами находится 1 или более пробел. Также после слова, кроме последнего, может следовать запятая ",". За последним словом идет точка ".". Проверить правильность ввода. Вывести все слова: начинающиеся и заканчивающиеся на...
C++ Конечный автомат для строк
Конечный автомат для строк используя switch. Помогите пожалуйста...
C++ Граф, решение задачи коммивояжера http://www.cyberforum.ru/cpp-beginners/thread79854.html
Решить задачу коммивояжёра (человек выезжает из одного города, должен объехать все остальные вернуться в первоначальный, проехав наименьший путь). Я планировал реализовать так - найти все возможные комбинации городов, потом выбрать те комбинации, которые начинаются с нужного города, откуда начинаем путешествие, а потом выбрать комбинацию с наим. затратами. Вроде код сделал, но ступор, дальше не...
C++ Найти максимальную сумму элементов прямоугольного подмассива по всем возможным прямоугольным подмассивам Задание: Дан массив A. Необходимо найти максимальную сумму элементов прямоугольного подмассива по всем возможным прямоугольным подмассивам. Решение: Пытался сделать сам - не получилось. Нашёл в интернете алгоритм на паскале, попробовал перевести в c++, вроде ошибок при компиляции не выдаёт, а вот ответ не тот... Посмотрите, может найдёте ошибку! Программа не очень большая. #include <iostream>... подробнее

Показать сообщение отдельно
octo96
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 21
27.12.2009, 13:59  [ТС]     Быстрая сортировка матрицы
Опишите пожалуйста этот код (если можно то построчно)
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
#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; 
 
 
       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/*0000*/;
    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, 65536); 
    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());
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru