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

ЗАДАЧА НА C++ НЕ ИСПОЛЬЗУЙТЕ НЕ КАКИЕ БИБЛЕОТЕКИ КРОМЕ #include
Дан массив A из N целых чисел. Требуется отсортировать его по неубыванию методом
выборки кандидата из исходного массива и записи этого кандидата на текущее (оно
правильное) место во втором массиве В. После этого на место выбранного кандидата из
первого массива записывается заведомо большое значение – пусть это будет 30000.
Вывести получившийся отсортированный массив.
Input
В первой строке вводится целое число N (1<=N<=1000) — количество чисел в массиве
A. Во второй строке вводятся N целых положительных чисел — элементы массива A
(-10000<=A i <=10000).
Output
Требуется вывести через пробел N чисел — отсортированный по неубыванию массив B.
Выводить пробел в конце строки не нужно.
Sample Input
7
1 2 -3 4 -5 0 6
Sample Output
-5 -3 0 1 2 4 6
Примечание
Сортировка массива из N элементов осуществляется в N этапов следующим образом:
1) На каждом i–ом этапе (1 <= i <= N) находится значение минимального элемента
массива A. Пусть это значение - minValue в позиции k. Для этого удобно применить
функцию int findLocationOfMin(int a[], int n) для нахождения номера минимального числа
в массиве.
2) В результирующий массив B на позицию i записывается значение minValue из
позиции k массива A. В позицию k массива A заносится число 30000.

👇
Ответ:
tori201512
tori201512
25.02.2021

Объяснение:

кусь

4,5(64 оценок)
Ответ:

Объяснение:

я незнаю ответ ему

4,4(1 оценок)
Открыть все ответы
Ответ:
йцукенг27
йцукенг27
25.02.2021
Язык программирования не указан, сказано только, что была сделана попытка создать алгоритм в Пайтоне, но работа оказалась очень медленной. Это не удивительно, ведь Пайтон - интерпретатор и там уж не до оптимизации.

Предлагаю решение на PascalABC.NET. Приводятся тайминги пяти прогонов, разрешение таймера - 16 мс.

Исходные последовательности:
- 1 млн случайных целых из [100;2000];
- 2 млн случайных целых из [50;1500];
- 3 млн случайных целых из [1;1000];

Алгоритм:
- генерируем последовательности;
- создаем и заполняем для каждой последовательности частотный словарь в виде кортежа <ключ><количество>, где ключ - значение элемента, количество - количество раз, которое этот элемент встретился в последовательности;
- создаем последовательности ключей для всех трех словарей и находим их пересечение;
- удаляем из каждого словаря элементы, ключей которых нет в пересечении;
- создаем на основе каждого словаря последовательность значений (частот) и сортируем её по возрастанию;
- для каждой пары значений первой и второй последовательности выбираем минимальное значение, а затем поступаем так же с результирующей и третьей последовательностью, находя в конце сумму её членов.

// PascalABC.NET 3.2, сборка 1374 от 10.01.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var t0:=Milliseconds;
  var a1:=ArrRandom(1000000,100,2000);
  var a2:=ArrRandom(2000000,50,1500);
  var a3:=ArrRandom(3000000,1,1000);
  var t1:=MillisecondsDelta;
  Writeln('Инициализация: ',t1,' мс');
  MillisecondsDelta;
 
  var d1:=new Dictionary<integer,integer>;
  foreach var e in a1 do d1[e]:=d1.Get(e)+1;
  var d2:=new Dictionary<integer,integer>;
  foreach var e in a2 do d2[e]:=d2.Get(e)+1;
  var d3:=new Dictionary<integer,integer>;
  foreach var e in a3 do d3[e]:=d3.Get(e)+1;
  t1:=MillisecondsDelta;
  Writeln('Заполнены частотные словари: ',t1,' мс');
  MillisecondsDelta;
 
  var kd1:=d1.Select(e->e.Key).ToArray;
  var kd2:=d2.Select(e->e.Key).ToArray;
  var kd3:=d3.Select(e->e.Key).ToArray;
  var ki:=kd1.Intersect(kd2).Intersect(kd3); // пересечение ключей
  t1:=MillisecondsDelta;
  Writeln('Получено пересечение ключей: ',t1,' мс');
  MillisecondsDelta;
 
  foreach var k in kd1 do
    if not (k in ki) then d1.Remove(k);
  var v1:=d1.OrderBy(x->x.Key).Select(x->x.Value);
  foreach var k in kd2 do
    if not (k in ki) then d2.Remove(k);
  var v2:=d2.OrderBy(x->x.Key).Select(x->x.Value);
  foreach var k in kd3 do
    if not (k in ki) then d3.Remove(k);
  var v3:=d3.OrderBy(x->x.Key).Select(x->x.Value);
  var m:=v1.Zip(v2,(x,y)->Min(x,y)).Zip(v3,(x,y)->Min(x,y)).Sum;
  t1:=MillisecondsDelta;
  Writeln('Получен результат: ',t1,' мс');
  MillisecondsDelta;
  Writeln(m);
end.

Результаты
Инициализация: 234 мс
Заполнены частотные словари: 312 мс
Получено пересечение ключей: 0 мс
Получен результат: 1000 мс
474970

Инициализация: 234 мс
Заполнены частотные словари: 312 мс
Получено пересечение ключей: 16 мс
Получен результат: 984 мс
474137

Инициализация: 250 мс
Заполнены частотные словари: 312 мс
Получено пересечение ключей: 16 мс
Получен результат: 984 мс
474176

Инициализация: 234 мс
Заполнены частотные словари: 312 мс
Получено пересечение ключей: 0 мс
Получен результат: 1000 мс
474090

Инициализация: 234 мс
Заполнены частотные словари: 312 мс
Получено пересечение ключей: 16 мс
Получен результат: 984 мс
474108

Как видно из результатов, в указанных условиях из 6 млн значений отбирается примерно 475 тыс и занимает это порядка полутора секунд на достаточно немолодом ПК c процессором Intel Core 2 Duo (3 ГГц) и 2 Гб оперативной памяти. Вполне приемлемо.
4,5(16 оценок)
Ответ:
lisasmirnova26
lisasmirnova26
25.02.2021
Скорее не ПК , а ЭВМ (немножко разные вещи)
I (1946-1955) , отличительная технология вакуумно-ламповая, средства ввода-вывода : перфокарты(ленты), магнитные ленты, печатающие устройства. Данные ЭВМ применялись для военных, научных и других задач
II (1955-1964) лампы заменились транзисторами, память на магнитных сердечниках, все это обеспечило ещё большую скорость, меньшее потребление энергии, надёжность и компактность (по сравнению с первым поколением). Начали использоваться Языки программирования высокого уровня.
III (1964-1975) появились интегральные схемы. intel сделали первый микропроцессор (1971), компьютеры стали компактнее, что расширило область их применения. Ассортимент ЯП увеличился
IV (1975-неопределенно) большие интегральные схемы, появились ПК (маленькие компьютеры с вычислительной мощностью больших ЭВМ лет, которые использовались обычными людьми)
V Компьютеры с искуственным интеллектом (как у человека обучаться и делать свои решения (не по строгому алгоритму). Сейчас искусственный интеллект быстро развивается (распознаватели голоса и изображений, боты для игр и чата, обработчики аудио, фото, видео(например, приложение prisma) и пр.
4,6(89 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ