Продемонстрируйте работу метода сортировки вставками по возрастанию. Для этого выведите состояние данного массива после каждой вставки на отдельных строках. Если массив упорядочен изначально, то следует ничего не выводить.
Формат входных данных
На первой строке дано целое число n (1≤n≤100) — количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 10^9. Формат выходных данных
В выходной файл выведите строки (по количеству вставок) по n чисел каждая.
Задачу то я решил, вот только тестирующая система говорит, что слишком много написано Correct 1 2 2 1 2 1 1 1 2 2 2 1 1 1 1 2 2 2
Output 1 2 2 1 2 1 1 2 1 2 2 1 1 1 2 2 2 1 1 1 2 2 1 2 1 1 2 1 2 2 1 1 1 2 2 2 C++Выделить код 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include #include using namespace std; int main(){ int n; cin >> n; vector a; for (int i = 0; i < n; i++){ int b; cin >> b; a.push_back(b); } for (int i = 1; i < n; i++){ for (int j = i; j > 0; j--){ if (a[j - 1] > a[j]){ swap(a[j], a[j - 1]); for (auto now : a){ cout << now << " "; } cout << "\n"; } else{ break; } } } return 0; }
Рассмотрим различные варианты слов из 20 букв, которые содержат 18 букв Т (звёздочка обозначает любую из оставшихся 10 букв): ТТТТТТТТТТТТТТТТТТ** ТТТТТТТТТТТТТТТТТ**Т ... **ТТТТТТТТТТТТТТТТТТ - 19 вариантов
ТТТТТТТТТТТТТТТТТ*Т* ТТТТТТТТТТТТТТТТ*ТТ* ТТТТТТТТТТТТТТТ*ТТТ* ... *ТТТТТТТТТТТТТТТТТТ* - 18 вариантов
Для решения задачи можно также использовать формулу для вычисления числа перестановок с повторениями: P(nт,n*) = (18+2)!/(18!*2!) = 20!/(18!*2!) = 19*20/2 = 190
Вместо каждой из "*" может стоять любой из десяти символов (кроме Т), то есть на каждую из 190 перестановок мы имеем 10^2 = 100 вариантов распределения остальных символов на месте звёздочек. Общее количество вариантов = 190*100 = 19000
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку