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

  • Автор темы guffigubber
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

guffigubber

Гость
#1
в общем, суть проблемы. Я новичок в C++.
я создаю динамический массив и заполняю его. затем мне его нужно отсортировать методом подсчета. завис на внесении значения счетчика во вспомогательный массив. объясните что и как делать? как мне заполнить второй массив и вновь составить уже отсортированный первый?
Код:
// КЭП.cpp: определяет точку входа для консольного приложения.
//
/*Создать массив, заполнить его. Отсортировать его методом подсчета*/
#include "stdafx.h"
#include <stdlib.h>
#include <cstdlib>
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout << "VVedite razmernost massiva: ";
cin >> n;
const int SIZE = n;
int *mas = 0;
try {
mas = new int [SIZE];
}
catch (bad_alloc err){
cout << "Error" << endl;
exit(1);
}
cout << "Vvedite elementy massiva: " << endl;
for (int i=0; i<SIZE; i++){
cin >> mas[i];
}

cout << "Elementy ishodnogo massiva: ";
for (int i=0; i<SIZE;i++){
cout << mas[i] << " ";
}


/*Сортировка подсчетом - Начало*/
int max = mas[0];
for (int i=0; i<SIZE;i++){
if (max < mas[i])
max = mas[i];
}
cout << endl << "Max element: " << max; 
const int SIZEN = max;
int *masnew = 0;
try {
masnew = new int [SIZEN];
}
catch (bad_alloc err){
cout << "Error" << endl;
exit(1);
}

/*ТУт я и завис*/
for (int i=0;i<SIZE;i++){
n = mas[i];
int k = 0;
for (int j=0;j<SIZE;j++){
if (mas[i]==n)
k++;
}
masnew[]=k; //занесение значение счетчика во вспомогательный массив
}
cout << endl;




/*Сортировка подсчетом - Конец*/

cout << endl;
delete [] mas;
delete [] masnew;
mas = 0;
masnew = 0;
return 0;
}
 

alekssgor

Well-Known Member
26.05.2008
118
0
#2
Зачем всё это ??? С++ Библиотека стандартных шаблонов Класс list .

Код:
#include <list>

int main()
{
list<char> lst;
int i;

// ЗАПОЛНЕНИЕ СПИСКА СЛУЧАЙНЫМИ СИМВОЛАМИ
for(i=0; i<10; i++) lst.push_back('A' + (rand()%26));

cout << "Исходное содержимое: ";
list<char>::iterator p = lst.begin();
while(p != lst.end())
{
cout << *p;
p++;
}
cout << endl;
//Сортировка списка
lst.sort();
cout << "Отсортированное содержимое: ";
p = lst.begin();
while(p != lst.end())
{
cout << *p;
p++;
}
return 0;
}
 
Статус
Закрыто для дальнейших ответов.