С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
iwanttodocode
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 2
1

Сортировка подсчетом вектора точек

23.04.2017, 18:43. Просмотров 251. Ответов 1

Ребята, нужна помощь!
Нужно реализовать сортировку подсчетом для вектора точек.
Есть некий шаблон для функции.
P.S. идея в том, чтобы создавать вектор векторов, но как с ними обращаться через указатели, я не могу найти информацию

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
#include <algorithm>
#include <iostream>
#include <vector>
#include <time.h>
 
using namespace std;
 
struct point {
  int x, y;
};
 
const int MAX_INT = 10;
const size_t MAX_PRINT = 20;
const size_t VEC_2_GEN_SIZE = MAX_INT;
 
 
vector<point> count_sort(vector<point>& vec) {
  vector<vector<int>*> count_vec(MAX_INT, NULL);
 
  // Store elements from vec to the count_vec.
  for (vector<point>::iterator it = vec.begin(); it != vec.end(); ++it) {
    if (count_vec[it->x] == NULL) {
      count_vec[it->x] = new vector<int>();
    }
    // Append element to the created or existing array.
  }
 
  // Run over all counted data structure and write sorted data back to the vec.
  for (vector<vector<int>*>::iterator it = count_vec.begin(); it != count_vec.end(); ++it) {
  }
 
  // Release temporary created arrays.
  for (vector<vector<int>*>::iterator it = count_vec.begin(); it != count_vec.end(); ++it) {
    if (*it != NULL) {
      delete *it;
    }
  }
  return vec;
}
 
int main(int argc, char* argv[])
{
  srand(1);
 
  vector<point> vec2sort;
  for (size_t idx = 0; idx < VEC_2_GEN_SIZE; idx++) {
    point pt;
    pt.x = rand() % MAX_INT;
    pt.y = idx;
    vec2sort.push_back(pt);
  }
 
  vec2sort=count_sort(vec2sort);
 
  cout << "After sort\n";
  size_t count = 0;
  for (vector<point>::iterator val = vec2sort.begin(); val != vec2sort.end() && count < MAX_PRINT; ++val, ++count)
    cout << "(" << val->x << ", " << val->y << ") ";
  cout << "\n";
  system("pause");
  return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2017, 18:43
Ответы с готовыми решениями:

Сортировка подсчетом и LSD сортировка
Кто может дать реализацию сортировки подсчетом и lsd сортировки на C?

Сортировка подсчетом
Есть код: #include &quot;head.h&quot; void main() { setlocale(LC_ALL,&quot;.1251&quot;);...

Сортировка подсчетом
Доброго времени суток. Написал код, вот только выдает ошибку: error C2061:...

сортировка подсчетом!
нужно написать програму, которая будет сортировать масив, методом подсчета! А...

Сортировка подсчетом с++
Всем привет. Есть такая проблемка. vs2010 выдает &quot;Прекращена работа программы&quot;....

1
iwanttodocode
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 2
02.05.2017, 21:51  [ТС] 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
#include <algorithm>
#include <iostream>
#include <vector>
#include <time.h>
 
using namespace std;
 
struct point {
  int x, y;
};
 
const int MAX_INT = 5;
const size_t MAX_PRINT = 20;
const size_t VEC_2_GEN_SIZE = MAX_INT;
 
 
vector<point> count_sort(vector<point> vec) {
  vector<vector<point>*> count_vec(MAX_INT, NULL);
//cout<<&(count_vec)<<endl;
//cout<<& vec<<endl;
 
  // Store elements from vec to the count_vec.
  
  for (vector<point>::iterator it = vec.begin(); it != vec.end(); ++it) {
    
      cout << "(" << it->x << ", " << it->y << ") "<<endl;
      cout<<count_vec[it->x]<<endl;
    if (count_vec[it->x] == NULL) {
      count_vec[it->x] = new vector<point>(); 
    }
    cout<<count_vec[it->x]<<endl;
    (*count_vec[it->x]).push_back(*it);
 
    // Append element to the created or existing array.
 
  }
    vec.clear();
    
  // Run over all counted data structure and write sorted data back to the vec.
 
    
  for (vector<vector<point>*>::iterator it = count_vec.begin(); it != count_vec.end(); ++it) {
      
     int count=0;
     size_t i=0;
     if (*(it)!=NULL) 
     {
         cout<<"---------"<<endl;
         cout<<"x="<<(*(*it)).at(0).x<<endl;
         cout<<"y="<<(*(*it)).at(0).y<<endl;
         cout<<"---------"<<endl;
         size_t s=(*(*it)).size();
         while( i<(*(*it)).size())
      {
          //cout<<"check "<<endl;
      point pt;
      pt.x=(*(*it)).at(i).x;
      pt.y=(*(*it)).at(i).y;
      vec.push_back(pt);
      i++;
 
      //}
      count++;
      }
  }
  }
 
  // Release temporary created arrays.
  for (vector<vector<point>*>::iterator it = count_vec.begin(); it != count_vec.end(); ++it) {
    if (*it != NULL) {
      delete *it;
    }
    
  }
  return vec;
}
 
int main(int argc, char* argv[])
{
  srand(1);
 
  vector<point> vec2sort;
  for (size_t idx = 0; idx < VEC_2_GEN_SIZE; idx++) {
    point pt;
    pt.x = rand() % MAX_INT;
    pt.y = idx;
    vec2sort.push_back(pt);
  }
 
   cout << "Before sort \n";
  size_t count = 0;
  for (vector<point>::iterator val = vec2sort.begin(); val != vec2sort.end() && count < MAX_PRINT; ++val, ++count)
    cout << "(" << val->x << ", " << val->y << ") ";
  cout << "\n";
 
  vec2sort=count_sort(vec2sort);
 
  cout << "After sort\n";
 count = 0;
  for (vector<point>::iterator val = vec2sort.begin(); val != vec2sort.end() && count < MAX_PRINT; ++val, ++count)
    cout << "(" << val->x << ", " << val->y << ") ";
  cout << "\n";
  system("pause");
  return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2017, 21:51

Сортировка подсчетом
Нужно написать код, который будет сортировать большие числа подсчетом. У меня...

Сортировка распределяющим подсчетом
если у кого то есть материал по данной сортировке, выложите плиз, а то в инете...

Алгоритмы сортировка подсчетом
Здравствуйте, Прохожу курс по алгоритмам от ИТМО, и уже неделю висну над...


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

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

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