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

Помогите с блочной сортировкой - C++

Восстановить пароль Регистрация
 
vova287
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 5
25.10.2011, 01:03     Помогите с блочной сортировкой #1
блочную сортировку задали, но задали не просто а с указателями и т.п т .д ,вроде по алгоритму все, не могу понять почему выбивает. Подскажите пожалуйста
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
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
using namespace std; 
 
class element //element 
{
public:
 int value;
 element *next;
 element()
 {
 value=NULL;
 next=NULL;
 }
};
 
class bucket //bucket containing a perticular range of values 
{
public:
element *firstElement;
bucket()
{
firstElement = NULL;
}
};
 
void main() 
{
 int lowend=0; // minimum element 
 int highend=100; //max element 
 int interval=10; //number of intervals 
 const int size = 20; 
 const int noBuckets=(highend-lowend)/interval; //number of buckets required 
 bucket *buckets=new bucket[noBuckets]; 
 bucket *temp;
 
 for(int a=0;a<noBuckets;a++) //creation of required buckets 
 {
 temp=new bucket;
 buckets[a]=*temp;
 }
 
int array[size];     //выделяем память для массива, который будет содержать неотсортированные данные
 
srand(time(NULL));
for(int i = 0; i < size; i++)     //заполняем массив случайными числами в интервале от 1 до 100
array[i] = rand() % 300;
 
cout << "Nosorted array: " << endl << endl;
cout << array;     //выводим на печать неотсортированный массив
 
 for(int j=0;j<19;j++) //sending elments into appropriate buckets
 {
 cout<<array[j]<<endl;
 element *temp,*pre;
 temp=buckets[array[j]/interval].firstElement;
 if(temp==NULL)//if it is the first element of the bucket
 {
 temp=new element;
 buckets[array[j]/interval].firstElement=temp;
 temp->value=array[j];
 }
 else
 {
 pre=NULL;
 while(temp!=NULL) //move till the appropriate position in the bucket
 {
 if(temp->value>array[j])
 break;
 pre=temp;
 temp=temp->next;
 }
 if(temp->value>array[j]) //if the new value is in betwen or at the begining
 {
 if(pre==NULL) //insertion at first if the bucket has elements already
 {
 element *firstNode;
 firstNode=new element();
 firstNode->value=array[j];
 firstNode->next=temp;
 buckets[array[j]/interval].firstElement=firstNode;
 }
 else //insertion at middle
 {
 element *firstNode;
 firstNode=new element();
 firstNode->value=array[j];
 firstNode->next=temp;
 pre->next=firstNode;
 }
 }
 else// if the new value is to be created at last of bucket
 {
 temp=new element;
 pre->next=temp;
 temp->value=array[j];
 }
 
 }
 }
 
 cout<<"------------------------The Sorted Elements Are---------------\n";
 for(int jk=0;jk<10;jk++)
 {
 element *temp;
 temp= buckets[jk].firstElement;
 while(temp!=NULL)
 {
 cout<<"*"<<temp->value<<endl;
 temp=temp->next;
 }
 }
 cout<<"--------------------------------END--------------------------------\n";
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 01:03     Помогите с блочной сортировкой
Посмотрите здесь:

C++ помогите с поразрядной сортировкой
Шаблон класса для блочной сортировки C++
C++ Помогите с сортировкой диагонали массива по убыванию
C++ траблы с сортировкой
Реализация блочной сортировки файла C++
C++ фильтрация с сортировкой
Не понятно с сортировкой! C++
Цикл с сортировкой C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru