Посчитайте для массива из N целых чисел, сколько элементов в нем останутся стоять на своих местах после сортировки массива.
Формат входных данных
В первой строке входных данных вводится натуральное число N, не превосходящее 100.
В следующей строке вводятся N целых чисел, по модулю не превосходящих 109.
Формат выходных данных
Выведите единственное число - ответ на задачу.
входные данные выходные данные
3
-1 10 5
1
5
-8 -52 -62 -61 -76
0
c++
Для начала, давайте разберемся с примером входных данных, чтобы лучше понять, как будет работать алгоритм.
Входные данные:
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;
}
Надеюсь, что объяснение и решение задачи были понятными и полезными. Если у вас есть еще вопросы, не стесняйтесь задавать.