C++ algoritmlar


ULASHISH

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!