struct pt {
int x, y;
};
Komparatorlar saralash uchun ishlatiladi. Komparator mantiqiy qiymat qaytaradigan funksiya bo’lib, saralashning qanday tartibda bajararilishini ko’rsatish uchun ishlatiladi. Masalan nuqtalarni x koordinata bo’yicha, agar x koordinata teng bo’lsa y koordinata bo’yicha saralaylik;
bool comp_x(pt a, pt b) {
return a.x < b.x || (a.x==b.x && a.y < b.y);
}
Yoki boshqacha qilib:
bool comp_x(pt a, pt b) {
if (a.x==b.x)
return a.y < b.y;
return a.x < b.x;
}
Dasturning asosiy qismida:
int main() {
int n;
cin>>n;
pt a[n+1];
for (int i = 1; i <= n; i++) {
cin>>a[i].x>>a[i].y;
}
sort(a+1, a+n+1, comp_x);
for (int i = 1; i <= n; i++) {
cout<}
}
Keyingi masala. N ta odamning ismi va yoshi berilgan. Ularni yoshi bo’yicha saralash kerak, agar yoshi teng bo’lib qolsa ismlarini alfavit bo’yicha saralash kerak.
5
Asd 5
asda 3
adada 10
asd 3
Aad 5
++++++++
asd 3
asda 3
Aad 5
Asd 5
adada 10
#include
#include
using namespace std;
struct person{
string name;
int old;
};
int comp(person a, person b) {
return a.old < b.old || (a.old==b.old && a.name < b.name);
}
int main() {
int n;
cin>>n;
person a[n+1];
for (int i = 1; i <= n; i++) {
cin>>a[i].name>>a[i].old;
}
sort(a+1, a+n+1, comp);
for (int i = 1; i <= n; i++) {
cout<}
}
Turg’un saralash
Turg’un saralash deb agar taqqoslanayotgan ikki qiymat bir xil bo’lib qolsa ularning nisbiy tartibini o’zgartirishsiz qoldirib saralashga aytiladi. Masalan oldinfi misoldagi shaxslarni ularning yoshlari teng bo’lib qolsa alfavit tartibida emas, ularning berilish tartibida qoldirish so’ralsa ularni turg’un saralash kerak bo’ladi. C++ ning sort funksiyasi orqali turg’un saralash uchun yana bittta maydon id-maydoni kiritamiz. Bu maydon yozuvning berilgan tartidagi ro’yxatda nechanchi turganligini bildiradi.
Agar taqqoslanadigan kattaliklar bir xil bo’lib qolsa uning ining indeksi bo’yicha saralaymiz:
Dostları ilə paylaş: |