Algoritmlar (Algorithms)
C++ Algoritmlar
Oldingi boblarda ma'lumot tuzilmalari (vektorlar, ro'yxatlar va boshqalar) ma'lumotlarni saqlash va tartibga solish uchun ishlatilishini o'rgandingiz.
Algoritmlar ma'lumot tuzilmalarini saralash, qidirish va boshqarish orqali muammolarni hal qilish uchun ishlatiladi.
<algorithm> kutubxonasi bu vazifalarni iteratorlar bilan bajarish uchun ko'plab foydali funksiyalarni taqdim etadi.
MISOL
// Algoritm kutubxonasini import qilish
#include <algorithm>Saralash algoritmlari
Ma'lumot tuzilmasidagi elementlarni saralash uchun sort() funksiyasidan foydalanish mumkin.
sort() funksiyasi parametr sifatida iteratorlar (odatda begin() va end() tomonidan qaytariladigan) oladi:
MISOL
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Alifbo tartibida saralash
sort(cars.begin(), cars.end());Sukut bo'yicha, elementlar o'sish tartibida saralanadi. Butun sonlar vektori bo'lsa, raqamli tartibda saralanadi:
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Raqamli tartibda saralash
sort(numbers.begin(), numbers.end());Tartibni teskari qilish uchun rbegin() va rend() ishlatiladi:
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Teskari raqamli tartibda saralash
sort(numbers.rbegin(), numbers.rend());Faqat muayyan elementlarni saralash mumkin:
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 4-elementdan boshlab saralash (faqat 5, 9, 2 saralanadi)
sort(numbers.begin() + 3, numbers.end());Qidirish algoritmlari
Vektorda muayyan elementni qidirish uchun find() funksiyasidan foydalanish mumkin.
U uchta parametr oladi: boshlanish_iteratori, tugash_iteratori, qiymat:
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 3 raqamini qidirish
auto it = find(numbers.begin(), numbers.end(), 3);Muayyan qiymatdan katta bo'lgan birinchi elementni topish uchun upper_bound() funksiyasi ishlatiladi:
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Vektorni o'sish tartibida saralash
sort(numbers.begin(), numbers.end());
// 5 dan katta birinchi qiymatni topish
auto it = upper_bound(numbers.begin(), numbers.end(), 5);ESLATMA
upper_bound() funksiyasi odatda saralangan ma'lumot tuzilmalarida ishlatiladi.
Eng kichik elementni topish uchun min_element():
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
auto it = min_element(numbers.begin(), numbers.end());Eng katta elementni topish uchun max_element():
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
auto it = max_element(numbers.begin(), numbers.end());O'zgartirish algoritmlari
Bir vektordan boshqasiga elementlarni nusxalash uchun copy() funksiyasi:
MISOL
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 6 ta butun son saqlaydigan copiedNumbers vektori yaratish
vector<int> copiedNumbers(6);
// numbers dan copiedNumbers ga elementlarni nusxalash
copy(numbers.begin(), numbers.end(), copiedNumbers.begin());Vektordagi barcha elementlarni bitta qiymat bilan to'ldirish uchun fill() funksiyasi:
MISOL
vector<int> numbers(6);
// Barcha elementlarni 35 qiymati bilan to'ldirish
fill(numbers.begin(), numbers.end(), 35);