Bu bo'limda siz uchta tartiblash algoritmini o'rgandingiz: Bubble Sort, Selection Sort va Insertion Sort. Ularning barchasi O(n²) murakkablikka ega, lekin har birining o'ziga xos kuchli tomoni bor.
Endi bu bilimlarni amaliy masalada qo'llaymiz. Real loyihalarda tartiblash eng ko'p ishlatiladigan operatsiyalardan biri — reytinglar, jadvallar, hisobotlar — barchasi tartiblashga asoslangan.
Masala: O'quvchilarning ismi va ballini olib, ularni ball bo'yicha kamayish tartibida (eng yuqori ball birinchi) reytingda joylashtirish kerak.
Masalan, kiritilgan ma'lumot:
Ali 85
Vali 92
Soli 78
Kamol 88Natija:
1. Vali: 92
2. Kamol: 88
3. Ali: 85
4. Soli: 78Yondashuvlar:
Bu masalani turli usullarda yechish mumkin. Eng oddiy usul — Python ning sort() funksiyasidan foydalanish:
talabalar = [("Ali", 85), ("Vali", 92), ("Soli", 78), ("Kamol", 88)]
# Ball bo'yicha kamayish tartibida tartiblash
talabalar.sort(key=lambda x: x[1], reverse=True)
for i, (ism, ball) in enumerate(talabalar):
print(f"{i+1}. {ism}: {ball}")Lekin siz o'rgangan algoritmlardan birini ham ishlatishingiz mumkin. Masalan, Selection Sort bilan:
talabalar = [("Ali", 85), ("Vali", 92), ("Soli", 78), ("Kamol", 88)]
# Selection Sort — eng katta ballni topib joylashtirish
for i in range(len(talabalar)):
max_idx = i
for j in range(i + 1, len(talabalar)):
if talabalar[j][1] > talabalar[max_idx][1]:
max_idx = j
talabalar[i], talabalar[max_idx] = talabalar[max_idx], talabalar[i]
for i, (ism, ball) in enumerate(talabalar):
print(f"{i+1}. {ism}: {ball}")E'tibor bering: biz > dan foydalandik (< o'rniga), chunki kamayish tartibida tartiblapaymiz.
Tuple'lar bilan ishlash:
Bu masalada ma'lumotni tuple (ball, ism) shaklida saqlasak, tartiblash yanada osonlashadi — chunki Python tuple'larni birinchi elementiga qarab tartiblaydi:
talabalar = [(85, "Ali"), (92, "Vali"), (78, "Soli"), (88, "Kamol")]
talabalar.sort(reverse=True) # ball bo'yicha kamayish tartibidaSinf reytingi tuzish
Dastur yozing:
Ali 85)"1. Ism: Ball" shaklida chiqaring