Посчитайте для массива из N целых чисел, сколько элементов в нем останутся стоять на своих местах после сортировки массива.

Формат входных данных
В первой строке входных данных вводится натуральное число N, не превосходящее 100.

В следующей строке вводятся N целых чисел, по модулю не превосходящих 109.

Формат выходных данных
Выведите единственное число - ответ на задачу.

входные данные выходные данные
3
-1 10 5
1
5
-8 -52 -62 -61 -76
0
c++

Lena121618 Lena121618    2   18.04.2020 13:50    145

Ответы
тисрлю тисрлю  26.01.2024 19:41
Для решения данной задачи, мы можем применить алгоритм сортировки массива, который будет сравнивать каждый элемент соседним, и если текущий элемент больше следующего, то они меняются местами. Мы будем повторять этот процесс до тех пор, пока массив не будет отсортирован полностью.

Для начала, давайте разберемся с примером входных данных, чтобы лучше понять, как будет работать алгоритм.

Входные данные:
3
-1 10 5

Массив имеет 3 элемента: -1, 10 и 5.

1. Первая итерация.
- Сравниваем -1 и 10. -1 меньше, поэтому они остаются на своих местах.
- Сравниваем 10 и 5. 10 больше, поэтому они меняются местами.

Массив после первой итерации: -1, 5, 10.

2. Вторая итерация.
- Сравниваем -1 и 5. -1 меньше, поэтому они остаются на своих местах.
- Сравниваем 5 и 10. 5 меньше, поэтому они остаются на своих местах.

Массив после второй итерации: -1, 5, 10.

Как видно из примера, после сортировки массива все элементы остались на своих местах.

Давайте теперь представим, что массив уже отсортирован.

Входные данные:
1
5

Массив имеет 1 элемент: 5.

1. Первая итерация.
- Массив уже отсортирован, поэтому никакие элементы не меняют своего места.

Массив после первой итерации: 5.

Как видно из примера, после сортировки массива остается только один элемент на своем месте.

Шаги решения задачи:

1. Прочитать число N из входных данных.
2. Создать пустой массив размером N.
3. Прочитать N чисел и заполнить массив.
4. Создать переменную count и установить ее равной 0. Она будет подсчитывать количество элементов, оставшихся на своих местах.
5. Создать цикл for, который будет выполняться N-1 раз, чтобы отсортировать массив.
- Внутри цикла, создать еще один цикл for, который будет выполняться от 0 до N-2, чтобы сравнивать элементы массива.
- Если текущий элемент больше следующего, поменять их местами.
- Если элементы не меняются при сравнении, увеличить переменную count на 1.
6. Вывести значение переменной count.

Пример решения на языке программирования C++:

#include
using namespace std;

int main() {
int N;
cin >> N;

int arr[N];

for (int i = 0; i < N; i++) {
cin >> arr[i];
}

int count = 0;
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
} else {
count++;
}
}
}

cout << count << endl;

return 0;
}

Надеюсь, что объяснение и решение задачи были понятными и полезными. Если у вас есть еще вопросы, не стесняйтесь задавать.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика