М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sevenfoldblood
sevenfoldblood
31.01.2020 05:26 •  Информатика

Реализовать сортировку подсчетом в с++ с объяснениями\комментариями

👇
Ответ:
ledilove77
ledilove77
31.01.2020
#include <iostream>
#include <vector>
using namespace std; //теперь нам не придется страдать с std::
int main(){
int n; cin>>n; //ввод кол-ва сортируемых элементов
vector <int> a(1e9,0); //создание вектора для хранения ответа. пока он заполнен 0. можно использовать массив
for (int i=0; i<n; ++i) { //запускаем цикл для ввода чисел
int input; cin>>input; //вводим сортируемое число
++a[input]; //считаем кол-во таких элементов во входном файле
}
for (int i=0; i<1e9; ++i) //цикл по всем элементам массива ответа
for (int j=0; j<a[i]; ++j) //цикл, который выводит данный элемент столько раз, сколько он встречается в массиве
cout<<i<<' ';
return 0; //завершение работы программы
}
Сортировка подсчетом заключается в том, что мы считаем, сколько раз данный элемент встречается в сортируеиом массиве и воводим его столько раз подряд на нужном месте, сколько он встречается в массиве.
Написанная мной программа сортирует элементы
0 \leqslant x \leqslant {10}^{9}
общее кол-во которых не превосходит
{10}^{9}
Если нужно что-то еще – пиши. Буду обьяснять более подробно.
4,4(2 оценок)
Открыть все ответы
Ответ:
sofia308
sofia308
31.01.2020

В n будем хранить количество чисел, которые ещё нужно вывести. a и b - предыдущее и текущее числа Фибоначчи. По определению, следующее число Фибоначчи равно сумме двух предыдущих, так что новое значение b будет a + b. Чтобы не заводить новую временную переменную, новое значение a можно будет найти, вычитая из нового b старое a, получится (a + b) - a = b.

Код процедуры:

procedure print_fib(n: integer);

var a, b, t: integer;

begin

   a := 0;

   b := 1;

   while n > 0 do

   begin

       write(b, ' ');

       b := a + b;

       a := b - a;

       n := n - 1;

   end;

end;

Пример основной программы:

begin

   print_fib(10)

end.

Вывод:

1 1 2 3 5 8 13 21 34 55

4,8(52 оценок)
Ответ:
Ruda05
Ruda05
31.01.2020

количество цветов в палитре определяется формулой хартли:

n=2^i (где n - количество цветов,   i - "вес" 1 px в битах).

1. найдем количество пикселей в изображении: 256*256=2^8 * 2^8 = 2^16 px

2. определим "вес" всех рх, переведя кб в биты: 8*2^13 (бит) = 2^3 * 2^13 = 2^16 (бит)

3. разделим "вес" всего изображения на количество рх (то есть найдем "вес" 1 рх в битах): 1 рх = 2^16 / 2^16 = 1 бит

4. следовательно (см. начало), количество цветов n=2^1=2 (т.е. изображение двухцветное, скорее всего - ч/б.

4,6(56 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ