Количество обменов
Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива.
Входные данные
На первой строке дано число N(1≤N≤1000) — количество элементов в массиве. На второй строке — сам массив. Гарантируется, что все элементы массива различны и не превышают по модулю 109.
Выходные данные
Выведите одно число — количество обменов пузырьковой сортировки.
Примеры
Ввод
Вывод
5
1 2 3 4 5
0
5
5 4 3 2 1
10
ЯЗЫКИ - ПИТОН И С++
Ответы на вопрос:
Объяснение:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUSSIAN");
const int n = 5; // (1≤N≤1000)
int mass[n] = { 5, 4, 3, 2, 1 };
int k = 0;
cout << "Исходный массив: ";
for (int i = 0; i < n; ++i)
{
cout << mass[i] << " ";
}
cout << endl;
for (int i = 1; i < n; i++) {
for (int j = 0; j < n-1; j++) {
if (mass[j] > mass[j + 1]) {
int b = mass[j]; // создали дополнительную переменную
mass[j] = mass[j + 1]; // меняем местами
mass[j + 1] = b; // значения элементов
k++;
}
}
}
cout << "Отсортированный массив: ";
for (int i = 0; i < n; ++i)
{
cout << mass[i] << " ";
}
cout << endl << "Kоличество обменов: " << k << endl;
system("pause");
return 0;
}
Решить эту задачу нам информация, приведенная в условиях задачи после сообщения о том, что островитянин дал ответ на мой вопрос: мое замечание о том, что после его ответа я узнал истинный ответ на свой вопрос. Предположим, что островитянин, с которым я разговаривал (обозначим его А), ответил на мой вопрос "да". Мог бы я после такого ответа знать, что по крайней мере один из встретившихся мне островитян рыцарь? Разумеется, нет. Действительно, А мог оказаться рыцарем и на мой вопрос правдиво ответить "да" (его ответ соответствовал бы истине, поскольку по крайней мере один островитянин, а именно А - рыцарь). Оба островитянина могли оказаться лжецами. В этом случае А, солгав, ответил бы на мой вопрос "да" (что было бы ложью, так как ни один из островитян не был рыцарем). Таким образом, получив от А ответ "да", я не смог бы узнать истинный ответ на свой вопрос. Но, как говорится в условиях задачи, после ответа А мне стал известен правильный ответ на заданный мною вопрос. Следовательно, А мог ответить только "нет". Разберемся теперь, кто такие островитянин А и его приятель, которого мы обозначим В. Если бы А был рыцарем, то он не мог бы дать правдивый ответ "нет", поэтому А - лжец. Так как его отрицательный ответ ложен, то по крайней мере одни из двух островитян должен быть рыцарем. Следовательно, А - лжец, а В - рыцарь
Популярно: Информатика
-
AnyaFOX928.04.2020 02:53
-
kayumovtanvir8911.06.2020 14:18
-
Рикания27.11.2020 12:38
-
misheln01.06.2020 18:27
-
vikaprostitova26.06.2021 18:30
-
данаасус04.04.2022 04:48
-
toly2223.09.2022 08:10
-
kosmoz200519.03.2022 11:47
-
янннак24.10.2020 07:09
-
NazarKlakovych2825.03.2023 19:18