Массивтегі элементтердің санын табу алгоритмі
1. Кеуде:
Инициализация:
Элементтердің санын сақтау үшін count айнымалы мәнін орнатыңыз.
Жиым элементтерін индекстеу үшін i айнымалысын орнатыңыз.
Цикл:
For циклін пайдаланып массив элементтерін айналдырыңыз.
Әрбір массив элементін берілген санмен салыстырыңыз.
Егер элемент берілген санға тең болса, санауды 1-ге көбейтіңіз.
Қорытынды:
Санақ мәнін басып шығарыңыз.
C++ тілінде іске асыру мысалы:
#include <iostream>
using namespace std;
int main() {
// Ввод массива
int n;
cout << "Введите количество элементов массива: ";
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cout << "Введите " << i + 1 << "-й элемент: ";
cin >> arr[i];
}
// Ввод искомого числа
int x;
cout << "Введите искомое число: ";
cin >> x;
// Подсчет количества элементов
int count = 0;
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
count++;
}
}
// Вывод результата
cout << "Количество элементов, равных " << x << ": " << count << endl;
return 0;
}
2. Екілік іздеу:
Сұрыптау:
Жиымды өсу ретімен сұрыптаңыз.
Іздеу:
Сұрыпталған массивтен берілген санды табу үшін екілік іздеу алгоритмін пайдаланыңыз.
Нөмірі табылса,
оның массивтегі бірінші және соңғы көрінісін табыңыз.
осыған тең элементтер саны соңғы және бірінші пайда болу + 1 индекстерінің айырмасына тең болады.
Қорытынды:
Табылған элементтердің санын басып шығарыңыз.
C++ тілінде іске асыру мысалы:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
// Ввод массива
int n;
cout << "Введите количество элементов массива: ";
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cout << "Введите " << i + 1 << "-й элемент: ";
cin >> arr[i];
}
// Сортировка массива
sort(arr, arr + n);
// Ввод искомого числа
int x;
cout << "Введите искомое число: ";
cin >> x;
// Бинарный поиск
int left = 0, right = n - 1;
int first_occurrence = -1, last_occurrence = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
first_occurrence = mid;
right = mid - 1;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
last_occurrence = mid;
left = mid + 1;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// Вывод результата
if (first_occurrence == -1) {
cout << "Число " << x << " не найдено." << endl;
} else {
int count = last_occurrence - first_occurrence + 1;
cout << "Количество элементов, равных " << x << ": " << count << endl;
}
return 0;
}