Intern
Ro'yxatni qanday tartiblash mumkin?
sobes.tech AI
AIdan javob
C++ tilida ro'yxatni saralash uchun quyidagi yondashuvlarni ishlatishingiz mumkin:
- std::sort: Standart kutubxonadan iteratsiyali algoritm.
- std::list::sort:
std::listuchun saralash metodi, u elementlarga referenslar ishlatadi, iteratorlar emas.
Taqqoslash:
| Metod | Qo'llaniladi | Murakkablik | Qo'shimcha xotira | Barqarorlik | Xususiyatlar |
|---|---|---|---|---|---|
std::sort |
Tasodifiy kirish (masalan, std::vector, std::deque) |
$O(N \log N)$ | $O(\log N)$ (o'rtacha) | Barqaror emas | std::list uchun samarali emas, chunki sekin tasodifiy kirish. |
std::list::sort |
std::list |
$O(N \log N)$ | $O(1)$ | Barqaror | std::list uchun samarali, chunki elementlarni ko'chirish shart emas. |
std::list::sort dan foydalanish misoli:
#include <list>
#include <iostream>
int main() {
std::list<int> mening_ro'yxat = {5, 2, 8, 1, 9};
// O'sish bo'yicha saralash
mening_ro'yxat.sort();
for (int qiymat : mening_ro'yxat) {
std::cout << qiymat << " ";
}
std::cout << std::endl;
// Ortish bo'yicha saralash, taqqosuvchi yordamida
mening_ro'yxat.sort([](int a, int b){ return a > b; });
for (int qiymat : mening_ro'yxat) {
std::cout << qiymat << " ";
}
std::cout << std::endl;
return 0;
}