НяшнаяПанда
27.08.2020 00:31

Сортировка одномерного массива указанным . Входные параметры: количество элементов в массиве, элементы массива. Вывод исходного и отсортированного массивов на консоль в удобном для пользователя, «читабельном» виде. Сортировка вставками. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть а1, а2, ..., аi – упорядоченная последовательность, т.е. а1 ≤ a2 ≤ ... ≤ аi. Берется следующее число ai+1 и вставляется в последовательность так, чтобы новая последовательность была тоже возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до n не будут перебраны. Примечание. Место помещения очередного элемента в отсортированную часть рекомендуется находить с двоичного поиска. Двоичный поиск оформить в виде отдельной функции. Написать на C(Си)

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
nikita22o
01.03.2021 18:30

В системе определения типов данных функция стоит особняком, все-таки она является алгоритмической компонентой. То, что функция рассматривается как тип данных, возможно потому, что она имеет результат – т.е. данные. Формально функция – это переменная производного типа данных по отношению к результату, который она дает. Иначе говоря, функция – это то, что можно вызвать, применив к ее имени  операцию ( ) справа. Еще одна возможность использовать функцию как переменную – получить указатель на нее.

Базовый тип char используется для создания производного типа - массива из 20 символов.

0,0(0 оценок)
Ответ:
АлинаКотик11111
18.04.2022 02:14

Резюмирую:

1) Использование того, чего не понимаешь (6-8 строки)

2) Решение за O(N^2) при ограничении N < 10^5, что очень плохо

3) Нет проверки на выход за границы выделенной памяти (20, 22 строки)

4) Абсолютно неверная идея алгоритма: сравнивать только соседние элементы, да и еще и непонятно зачем делать во вложенном цикле + неверное написание тела цикла фор: полное непонимание того, как он работает и что делает

5) Нет проверки на то, использовали мы конкретное число уже или нет

Итог: полностью неверное решение, которое надо не менять, а стирать и переделывать.

Возможное решение на сотку:

#include <iostream>

#include <vector>

#include <map>

using namespace std;

signed main() {

   map<int, int> cnt;

   int n;

   cin >> n;

   vector<int> a(n), res;

   for(auto &i: a){

       cin >> i;

       cnt[i]++;

   }

   for(auto &i: a){

       if(cnt[i] > 1) res.push_back(i);

       cnt[i] = 0;

   }

   if(res.empty()) cout << 0;

   else for(auto &i: res) cout << i << " ";

}

P.S. Если что непонятно, то спрашивай - распишу поминутно кто где того самого

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота