C++ algoritmlar
C++ algoritmlar
Oldingi boblarda ma’lumotlar tuzilmalari (vektorlar, list’lar va h.k.) ma’lumotlarni saqlash va tartibga solish uchun ishlatilishini bilib oldingiz.
Algoritmlar ma’lumotlar tuzilmalarini saralash, ulardan qidirish va ularni qayta ishlash orqali masalalarni yechish uchun ishlatiladi.
<algorithm> kutubxonasi bu vazifalarni iteratorlar yordamida bajarish uchun ko‘plab foydali funksiyalarni taqdim etadi.
Bu funksiyalardan foydalanish uchun <algorithm> sarlavha faylini qo‘shishingiz kerak:
// Include the algorithm library
#include <algorithm>
Saralash algoritmlari
Ma’lumotlar tuzilmasidagi elementlarni saralash uchun sort() funksiyasidan foydalanishingiz mumkin.
sort() funksiyasi parametr sifatida iteratorlarni (odatda begin() qaytaradigan boshlang‘ich iterator va end() qaytaradigan yakuniy iterator) qabul qiladi:
Misol
// Create a vector called cars that will store strings
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Sort cars alphabetically
sort(cars.begin(), cars.end());
O‘zingiz sinab ko‘ring »
Standart holatda elementlar o‘sish tartibida saralanadi. Yuqoridagi misolda elementlar string bo‘lgani uchun alifbo tartibida saralangan.
Agar butun sonlardan iborat vektorimiz bo‘lganida, ular son qiymati bo‘yicha saralangan bo‘lardi:
Misol
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Sort numbers numerically
sort(numbers.begin(), numbers.end());
O‘zingiz sinab ko‘ring »
Tartibni teskarisiga o‘zgartirish uchun begin() va end() o‘rniga rbegin() va rend() dan foydalanishingiz mumkin:
Misol
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Sort numbers numerically in reverse order
sort(numbers.rbegin(), numbers.rend());
O‘zingiz sinab ko‘ring »
Faqat ma’lum elementlarni saralash uchun quyidagicha yozishingiz mumkin:
Misol
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Sort numbers numerically, starting from the fourth element (only sort 5, 9, and 2)
sort(numbers.begin() + 3, numbers.end());
O‘zingiz sinab ko‘ring »
Qidiruv algoritmlari
Vektordan ma’lum elementlarni qidirish uchun find() funksiyasidan foydalanishingiz mumkin.
U uchta parametr qabul qiladi: start_iterator,
end_iterator, value, bu yerda value — qidiriladigan qiymat:
Misol
"numbers" ichidan 3 sonini qidiring:
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Search for the number 3
auto it = find(numbers.begin(), numbers.end(), 3);
O‘zingiz sinab ko‘ring »
Ma’lum qiymatdan katta bo‘lgan birinchi elementni qidirish uchun upper_bound() funksiyasidan foydalanishingiz mumkin:
Misol
"numbers" ichidan 5 dan katta bo‘lgan birinchi qiymatni toping:
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Sort the vector in ascending order
sort(numbers.begin(), numbers.end());
// Find the first value that is greater than 5 in the sorted vector
auto it = upper_bound(numbers.begin(), numbers.end(), 5);
O‘zingiz sinab ko‘ring »
upper_bound() funksiyasi odatda saralangan ma’lumotlar tuzilmalarida ishlatiladi. Shuning uchun yuqoridagi misolda avval vektorni saralaymiz.
Vektordagi eng kichik elementni topish uchun min_element() funksiyasidan foydalaning:
Misol
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Find the smallest number
auto it = min_element(numbers.begin(), numbers.end());
O‘zingiz sinab ko‘ring »
Eng katta elementni topish uchun max_element() funksiyasidan foydalaning:
Misol
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Find the largest number
auto it = max_element(numbers.begin(), numbers.end());
O‘zingiz sinab ko‘ring »
O‘zgartiruvchi algoritmlar
Elementlarni bir vektordan boshqasiga nusxalash uchun copy() funksiyasidan foydalanishingiz mumkin:
Misol
Elementlarni bir vektordan boshqasiga nusxalang:
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Create a vector called copiedNumbers that should store 6 integers
vector<int> copiedNumbers(6);
// Copy elements from numbers to copiedNumbers
copy(numbers.begin(), numbers.end(), copiedNumbers.begin());
O‘zingiz sinab ko‘ring »
Vektordagi barcha elementlarni bitta qiymat bilan to‘ldirish uchun fill() funksiyasidan foydalanishingiz mumkin:
Misol
numbers vektoridagi barcha elementlarni 35 qiymati bilan to‘ldiring:
// Create a vector called numbers that will store 6 integers
vector<int> numbers(6);
// Fill all elements in the numbers vector with the value 35
fill(numbers.begin(), numbers.end(), 35);
O‘zingiz sinab ko‘ring »
To‘liq algorithm ma’lumotnomasi
Algoritm funksiyalarining to‘liq ma’lumotnomasi uchun C++ algorithm ma’lumotnomamizga o‘ting.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
