https://pastein.ru/t/Fd

  скопируйте уникальную ссылку для отправки




#include <iostream>
#include <vector>

using namespace std;



int main()

{
	setlocale(LC_ALL, "Russian");
	int* c = new int[1000]{};//элементы массива а не принимают значения больше 1000, c - массив, куда записывается кол-во одинаковых элементов
	int* d = new int[1000]{};//расчет индексов

	int n = 10;
	int* b = new int[n] {};//отсортированный вектор
	int* a = new int[n] {967, 38, 386, 25, 12, 38, 10, 25, 9, 68};
	int r, s;
	r = a[0];
	s = a[0];
	cout << "начальный массив" << endl;
	for (int i = 0; i < n; i++)
	{
		cout << a[i] << endl;

	}
	cout << endl;
	cout << endl;
	cout << endl;

	for (int i = 1; i < n; i++)
	{
		if (r > a[i])
		{
			r = a[i];
		}
		else
			if (s < a[i])
				s = a[i];
	}
	//cout << r << "   " << s<<endl;



	for (int i = 0; i < n; i++)
	{
		c[a[i]] = c[a[i]] + 1;
	}
	d[r] = 0;
	for (int i = r + 1; i <= s; i++)
	{
		d[i] = d[i - 1] + c[i - 1];
	}
	int k;
	for (int i = 0; i < n; i++)
	{
		k = a[i];
		b[d[k]] = a[i];
		d[k] = d[k] + 1;
	}

	cout << "Сортированный массив" << endl;
	for (int i = 0; i < n; i++)
	{
		cout << b[i] << endl;
	}
}