3. Saralash
Nazariya
Nega saralash muhim
Saralangan ma’lumot ustida ko‘p narsa osonlashadi: ikkilik qidiruv,
takrorlarni topish, eng yaqin juftlik, mediana. Ko‘p masala «avval
saralaymiz» degan qatordan boshlanadi.
Sodda usullar (tushunish uchun)
Tanlash bilan saralash: eng kichigini topib boshiga qo‘yamiz,
keyin qolganidan yana eng kichigini. O(n²).
O‘rniga qo‘yish: har bir elementni allaqachon saralangan qismning
kerakli joyiga suqamiz. O(n²), lekin deyarli saralangan massivda tez.
Ko‘pikli: qo‘shni juftlarni almashtirib chiqamiz. O(n²), amalda
eng sekini.
Bularni bilish kerak, lekin musobaqada yozilmaydi.
Amaliyotda
a.sort() # o‘zini saralaydi, None qaytaradi
b = sorted(a) # yangi ro‘yxat
a.sort(reverse=True) # kamayish tartibidaPython‘dagi saralash O(n log n) va barqaror (stable): teng
elementlarning boshlang‘ich tartibi buzilmaydi.
key bilan saralash
sozlar.sort(key=len) # uzunligi bo‘yicha
odamlar.sort(key=lambda p: p[1]) # ikkinchi maydon bo‘yicha
odamlar.sort(key=lambda p: (-p[1], p[0])) # ball kamayishi, keyin ismOxirgi yozuv — reyting jadvali uchun tayyor namuna: avval ball
bo‘yicha kamayish, teng bo‘lsa alifbo bo‘yicha.
Nimani eslab qolish kerak
sort()— o‘zini,sorted()— nusxani;- murakkablik O(n log n);
key— nimaga qarab solishtirish;- teskari tartib uchun
reverse=Trueyokikeyda minus.
Misol
a = list(map(int, input().split()))
a.sort()
print(*a)
print(a[len(a) // 2]) # mediana
Mashq masalalari
| ✓ | Kod | Masala | Qiyinlik |
|---|---|---|---|
| AL03-1 | Saralash | Boshlang‘ich | |
| AL03-2 | Reyting jadvali | Oson | |
| AL03-3 | Mediana | Boshlang‘ich | |
| AL03-4 | Eng yaqin juftlik | Oson | |
| AL03-5 | Kesmalarni birlashtirish | O‘rta |