Natija :
'Toshimova Gulshoda' ning xesh qiymati: 1809
Insertion sort (Joylab saralash) ham tartibsiz array elementlarini saralash uchun mo’ljallangan. Uning ishlash prinsipi (g’oyasi) huddi qo’ldagi kartani saralashga o’xshab ketadi. Ya’ni tartibsiz turgan kartalar ichidan birini olasiz va uni o’zi turishi kerak bo’lgan joyga joylashtirib qo’yasiz.
Insertion sort ham shunday ishlaydi. Algoritm oldin array boshidagi ikkita elementni saralab oladida qolgan elementlarni shularga qarab o’z o’rniga joylashtirib ketaveradi. (Ulardan oldiga, ularning orasiga yoki ulardan keyinga). Har bir element huddi shu tartibda o’z o’rnini topib boraveradi.
Insertion sort algoritmi – bu saralash algoritmi, o'z elementini o'zini oldi ko'rsatuvchi joyga joylashtiradi. Elementlarni bir-birini tekshirib olib, kerakli joyga joylashtiradi. Algoritma tartibida birinchi elementni o'ziga joylashtiriladi, keyin ikkinchi, keyin uchinchi va hokazo.
Insertion sort algoritmi o'n kvadrat vaqt xarajatlari bilan ishlaydi, shuning uchun katta ro'yxatlarda vaqt xarajatlari katta bo'lishi mumkin.
Insertion sort algoritmi tartibida Respublikamizdagi viloyatlar maydonini o’sish tartibida joylashtirish uchun bir misol:
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
current_value = arr[i]
position = i
# Extract numerical value from the string
current_value_numeric = int(''.join(filter(str.isdigit, current_value)))
while position > 0:
# Extract numerical value from the string in the previous position
prev_value_numeric = int(''.join(filter(str.isdigit, arr[position - 1])))
if prev_value_numeric > current_value_numeric:
arr[position] = arr[position - 1]
position -= 1
else:
break
arr[position] = current_value
# Respublikamizdagi viloyatlar maydonini o’sish tartibida joylashtirish
viloyatlar = ["16400kv_km_Samarqand", "7900kv_km_Namangan", "4200kv_km_Andijon", "6800kv_km_Farg'ona", "6300kv_km_Xorazm", "20800kv_km_Surxondaryo", "100800kv_km_Navoiy", "28400kv_km_Qashqadaryo", "39400kv_km_Buxoro", "20500kv_km_Jizzax", "5100kv_km_Sirdaryo", "15300kv_km_Toshkent viloyati", "160000kv_km_Qoraqalpog'iston"]
insertion_sort(viloyatlar)
# Natijani chiqarish
print("Respublikamizdagi viloyatlar maydoni o'sish tartibida:")
for viloyat in viloyatlar:
print(viloyat)
|