Asosiy qismga o‘tish

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 tartibida

Python‘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 ism

Oxirgi 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=True yoki key da minus.

Misol

a = list(map(int, input().split()))
a.sort()
print(*a)
print(a[len(a) // 2])   # mediana

Mashq masalalari

✓KodMasalaQiyinlik
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

Nazorat savollari

1 Python‘dagi `sorted()` ning murakkabligi qanday? Bitta to‘g‘ri javob
2 `a.sort()` va `sorted(a)` orasidagi farq nima? Bitta to‘g‘ri javob
3 Nima chiqadi? Kod nima chiqaradi
a = [3, 1, 2]
b = sorted(a)
print(a, b)
4 So‘zlarni uzunligi bo‘yicha saralash uchun nima yoziladi? Bitta to‘g‘ri javob
5 Python‘dagi saralash barqaror: teng elementlarning boshlang‘ich tartibi saqlanadi. To‘g‘ri yoki noto‘g‘ri
6 Ballni kamayish, ismni o‘sish tartibida saralash uchun key nima bo‘ladi? Bo‘sh joyni to‘ldirish
odamlar.sort(key=lambda p: (____p[1], p[0]))
7 Qaysi masalalarda saralash yordam beradi? Bir nechta to‘g‘ri javob

Bir nechta javob to‘g‘ri bo‘lishi mumkin.

8 Ko‘pikli saralashning murakkabligi qanday? (O(...) ko‘rinishida) Qisqa javob — yoziladi
9 Nima chiqadi? Kod nima chiqaradi
a = ['bb', 'a', 'ccc']
a.sort(key=len)
print(a)
10 Deyarli saralangan massivda qaysi sodda usul tez ishlaydi? Bitta to‘g‘ri javob

Javoblar serverda tekshiriladi. Katta-kichik harf, apostrof shakli va ortiqcha bo‘shliq ahamiyatsiz.