logo

Pufakcha usuli bilan saralash algoritimi

Загружено в:

23.11.2024

Скачано:

0

Размер:

1212.7197265625 KB
Mavzu:  Pufakcha usuli bilan saralash algoritimi
Reja:
I. Kirish
II. Bubble sort algoritmi xossalari
1.Pufakcha usuli
2. Pufakcha usulida saralash algoritmi
3.Pufakcha usulida amaliy ish
III. Xulosa
IV. Foydalanilgan adabiyotlar
Kirish
Saralash   -  deb, berilgan obyektlar ketma-ketligini ma`lum mantiqiy 
tartibda qayta joylashtirish jarayoniga aytiladi. Saralash bir necha 
ko`rsatkichlarga bog`liq bo`lishi mumkin. Misol uchun maktab jurnalida
o'quvchilar familiyasi   alifbo   tartibiga ko'ra saralangan bo'ladi.
Masalan bizga sonlar qatori berilgan: 8, 23, 0, -50, 100. Bu qatorni 
kichigidan kattasiga qarab yoki kattasidan kichigiga qarab saralashimiz 
mumkin. Bu saralashni amalga oshirish jarayoni   Saralash 
algoritmi   deyiladi. Saralash jarayoni taqqoslashga asoslangan jarayon 
hisoblanadi. Yuqoridagi sonli qatorni kichigidan kattasiga qarab 
tartiblaganimizda -50, 0, 8, 23, 100 ko'rinishiga keladi. Biz buni qanday 
amalga oshirdik. Bunda har xil usuldan foydalanish mumkin va mana  shu algoritm turlaridir Biz algoritmlardan bittasidan foydalanib 
yuqoridagi sonli qatorni tartiblaymiz. Avval, sonli qatordan eng 
kichigini topamiz va uni ro'yxatning boshiga qo'yamiz. Har bir sonni 
boshqasi bilan solishtirib chiqamiz. Agar son o'zidan keyingi sondan 
kichik bo'lsa, son shu joyida qoladi, agar katta bo'lsa sonlarning o'rnini 
almashtiramiz.
Eng kattasini boshiga o`tkazamiz: 23, 3, 22, 1, 45, 54;(54 soni har bir 
son bilan solishtirilib eng katta ekani aniqlandi, 45 esa o`z o`rnida 
turipti) Shu tartibni davom ettiramiz: 3, 22, 1, 23, 45, 54;(23 undan 
keyinda turuvchi eng katta son) Yuqoridagi amalni yana davom 
ettiramiz: 3, 1, 22, 23, 45, 54;(22 esa davomchi) Oxirgi marta 
almashtirishimiz quyidagi natijani beradi: 1, 3, 22, 23, 45, 54;(1 eng 
kichigi) Saralangan tartib quyidagi holatga keldi: 1, 3, 22, 23, 45, 54;
Bizning miyamiz o`zi optimal deb bilgan yo`nalishdan ketadi va biz 
uchun faqat bitta saralash algoritmi mavjud. Ammo dasturlashda bunday
deb bo`lmaydi. Dasturlashga talab ortib, bu soha rivojlanib borgani sari 
unda bir qator sohalardagi kabi tezlikni oshirish muammosi paydo 
bo`ladi. Chunki ilk kompyuter tizimlarida kompyuter tizimining 30% 
tezligi, operativ xotirasi saralashga sarflanar edi. Shu o`rinda savol 
tug`iladi, operatsion tizimlarda ham saralashdan foydalaniladimi? 
Albatta ha! Fikrimiz isbotini hozirda
keng foydalaniladigan Total Commander dasturi isbotlaydi. Unda bir 
necha xil saralash mavjud: fayl turi, nomi, o`zgartirilgan sanasi va 
o`lchami. Har birini o`sish yoki kamayish tartibida saralash mumkin. Ha
aytgancha, hozirgi tizimlar 30% emas anchagina kamroq tezlik va xotira 
sarflashadi. Chunki tezlik masalasi tobora yuqori cho`qqiga chiqayotgan va ishlanayotgan ma`lumotlar o`lchami oshib borayotgan bir paytda 
sekin ishlovchi algoritmlardan foydalanish kulguli. Ma`lumotlar 
o`lchamlari esa juda katta, shu sababli ularni aniq va tez saralashga 
ehtiyoj mavjud. Buni amalga oshirish uchun esa yangi algoritmlarga 
ehtiyoj tug`ila boshladi. Buni yechimi sifatida bir necha turdagi 
algoritmlardan foydalaniladi.
Saralash algoritmimning turlari
 Bubble sort   
 Selection sort   
 Insertion sort   
 Quick sort   
 Merge sort   
II. Bubble sort
Pufakcha saralash, ba'zan cho'ktiruvchi saralash deb ataladi, oddiy 
tartiblash algoritmi bo'lib, u kiritilgan ro'yxat elementini element 
bo'yicha qayta-qayta bosib o'tadi, joriy elementni undan keyingisi bilan  taqqoslaydi va kerak bo'lganda ularning qiymatlarini almashtiradi.  
Ro yxat bo yicha bu o tishlar o tish vaqtida hech qanday almashtirish ʻ ʻ ʻ ʻ
amalga oshirilmaguncha takrorlanadi, ya ni ro yxat to liq tartiblangan.  	
ʼ ʻ ʻ
Taqqoslash turi bo'lgan algoritm kattaroq elementlarni ro'yxatning 
yuqori qismiga  ko'tarilishi uchun nomlangan.
Pufakchani saralash nimaga o'xshaydi?
Agar dasturchi yoki tahlilchi bir qator raqamlarni o'sish tartibida 
joylashtirmoqchi bo'lsa, pufakchani tartiblash usuli bu erda ko'rsatilgan 
misolga o'xshaydi. Algoritm bir vaqtning o'zida ikkita elementni ko'rib chiqadi, chapdan 
o'ngga o'sish tartibida bo'lmaganlarni o'zgartiradi va keyin hech qanday 
raqamni almashtirmasdan o'tishni tugatmaguncha butun ketma-ketlikni 
aylanishni davom ettiradi.
Bubble Sort uchun Python dasturi
Bubble Sort - bu eng oddiy tartiblash algoritmi bo'lib, agar ular noto'g'ri 
tartibda bo'lsa, ulashgan elementlarni qayta-qayta almashtirish orqali 
ishlaydi.
Pufakchali tartiblash ikki qo‘shni elementni solishtiradigan va ularni 
mo‘ljallangan tartibda bo‘lguncha almashtiradigan tartiblash 
algoritmidir.
Yuzaga ko'tarilgan suvdagi havo pufakchalarining harakati kabi, 
massivning har bir elementi har bir iteratsiyada oxirigacha harakat 
qiladi.  Shuning uchun u pufakchali turlanish deb ataladi.
Pufakchali saralash   algoritmining mohiyati kichik qiymatlarning 
ro’yxat yuqorisiga itarilib, yirik qiymatlarning ro’yxat pastiga surilishiga asoslangan.
Pufakchali saralashning ko’p variantlari mavjud bo’lib, ulardan birini 
ko’rib o’tamiz. Bunda algoritm ro’yxat bo’ylab bir n е cha o’tishni 
bajaradi. Har bir o’tishda qo’shni el е m е ntlar bir-biri bilan 
taqqoslanadi.Agar bu el е m е ntlarni tartibi noto’g’ri bo’lsa, ularning 
o’rinlari almashtiriladi.Har bir o’tish ro’yxat boshidan boshlanadi. Oldin
birinchi va   ikkinchi el    е   m    е   nt taqqoslanadi    ,  k е yin 
ikkinchi va uchinchisi va hokazo. Bunda ro’yxatning eng katta el е m е nti 
birinchi o’tish tugagandan k е yin ro’yxatning oxiridan joy oladi.Ikkinchi 
o’tishda kattalik bo’yicha ikkinchi el е m е nt oxiridan ikkinchi o’rinni 
egallaydi.
Agar biror o’tishda bitta ham o’rin almashtirish bajarilmasa 
ro’yxat   saralangan d    е   b hisoblanib    , algoritm ishi to’xtatiladi.  Pufakcha saralash  agar oldingisi keyingisidan katta bo‘lsa, qo‘shni 
elementlarni ketma-ket taqqoslash va almashish orqali massivlarni 
saralash usuli.Bu algoritmni bajarish jarayonida katta qiymatga ega 
bo‘lgan elementlar massiv oxirida, kichikroq  elementlar  esa  asta-sekin 
massivning boshiga o‘tkaziladi. Majoziy qilib aytganda, og‘ir elementlar pastga   tushadi,   engil   elementlar   esa   havo   pufakchalari   kabi   
asta-sekin   yuqoriga ko‘tariladi. Pufakcha tartiblashda tashqi halqaning 
takrorlanish soni massiv uzunligidan bitta kam qilib belgilanadi, chunki 
ikkinchi element joyiga tushganda, birinchi element allaqachon minimal 
bo‘ladi va massiv boshiga o‘tadi.Ichki takrorlanish soni tashqi siklning 
iteratsiya soniga bog‘liq, chunki massivning boshi allaqachon 
tartiblangan va bu elementlarni tekshirishning ma'nosi yo‘q.Massiv 
quyidagi ko‘rinishda bo‘lsin [7, 15, 5, 3, 9].Tashqi takrorlanishning 
birinchi iteratsiyasida 3 soni massisv boshiga o‘tadi. Buning uchun ichki
siklda 4 ta taqqoslash kerak bo‘ladi:7 > 15? Yo‘q7 > 5? Ha. Biz joylarni 
almashtiramiz  [5, 15, 7, 3, 9]5 > 3? Ha. Biz joylarni almashtiramiz [3, 
15, 7, 5, 9]3 > 9? Yo‘qNatija: [3, 15, 7, 5, 9]
Elementlarni saralash - ishlab chiquvchi o'rganishi kerak bo'lgan 
algoritmlar toifalaridan biridir.
Algoritm (algoritm) - kirishda har qanday aniq belgilangan hisoblash 
jarayoni bo'lib, unga qandaydir qiymat yoki qiymatlar to'plami beriladi 
va amalga oshirish natijasi chiqish qiymati yoki qiymatlar 
to'plamidir.   Bu shuni anglatadiki, algoritm kirish qiymatlarini chiqish 
qiymatlariga aylantiradigan hisoblash bosqichlarining ma'lum bir ketma-
ketligidir.
Algoritm, shuningdek, yaxshi tuzilgan hisoblash masalalarini yechish 
vositasi sifatida ham taqdim etiladi.   Algoritm ushbu munosabatlarni 
amalga oshirishga erishish uchun ishlatilishi mumkin bo'lgan aniq 
hisoblash jarayonini tavsiflaydi.
Masalan, sonlar ketma-ketligini kamaymaydigan tartibda saralash  zarurati paydo bo'ladi.   Bunday muammo amaliyotda juda keng tarqalgan
va algoritmlarni ishlab chiqish va tahlil qilishning
standart usullarining ko'pchiligi bilan tanishish uchun ajoyib
namuna bo'lib xizmat qiladi. =========================== Saralash - ma'lum bir ma'lumotlar to'plamining ob'ektlarini ma'lum 
tartibda tartiblash tartibi.   Saralash jarayonining asosiy maqsadi  saralangan ma'lumotlar qatoridagi qiymatlarni keyingi izlash tezligini 
oshirishdir.   Amalda barcha vazifalarda saralash elementlari 
mavjud.   Saralangan elementlar telefon ma'lumotnomalarida, 
mundarijalarda, kutubxonalarda, lug'atlarda va boshqa ko'plab 
maqsadlarda mavjud.
Shunga ko'ra, saralash usullari, ayniqsa, axborot ma'lumotlarini qayta 
ishlashda juda muhimdir.   Saralash bir xil vazifani amalga oshiradigan 
algoritmlarni qurish uchun ko'plab fundamental
texnikalar bilan bog'liq bo'lib, ularning ba'zilari qaysidir ma'noda 
optimaldir va ularning aksariyati qolganlarga nisbatan ma'lum 
afzalliklarga ega.
Algoritmlarni tanlashning ma'lumotlar tuzilishiga bog'liqligi 
kuchli.   Amaldagi saralash usullari ko'pincha ikki guruhga bo'linadi: 
fayllarni saralash va massivlarni saralash.   Bu ikki guruh ba'zan ichki va 
tashqi turlar deb ataladi, chunki massivlar kompyuterning "ichki" 
(operativ) xotirasida (tezkor tasodifiy kirish bu xotira turiga xosdir) va 
ko'rib chiqilayotgan fayllar unchalik tez emas, balki juda ko'p sig'imli 
"tashqi" xotira , boshqacha qilib aytganda, mexanik harakatga ega 
bo'lgan saqlash qurilmasida (disklar, lentalar).
Saralash algoritmlari samaradorligining asosiy mezonlari quyidagilardan
iborat
Misol:
Def bubble_sort(a):
    n=len(a)
    for I in range(n):         for j in range(0,n-i-1):
            if a[j]>a[j+1]:
                a[j],a[j+1]=a[j+1],a[j]
             print(a)
a=[2,1,8,4,3,0,7]
bubble_sort(a)
Natija:
A=[2,1,8,4,3,0,7]
[1,2,8,4,3,0,7]
[1,2,4,8,3,0,7]
.
.
[[0,1,2,3,4,7,8]
Massivning elementlarini saralab ketma ketlikda chiqarib beradi
V. Xulosa
Saralash algoritmlaridan biri bo’lgan Bubble sort saralash algoritmidan 
shuni xulosa qilib aytish mumkinki
Pufakcha bir nechta elementli ro'yxatni tartiblashda ishlatiladigan oddiy 
bir saralash algoritmidir. Ushbu algoritmning asosiy qo'llanilishi uning 
qiyinligi va darajasi bo'lib, katta ro'yxatlarda vaqt va resurslarni samarali
ishlatmaydi. Algoritmda har bir element qarshilig'i bilan solishtiriladi va  kerakli tartibda emasligini ko'rsatganda almashtirish jarayoni davom 
ettiriladi. Pufakcha usuli asosan quyidagi bosqichlardan iborat:
1. Ro'yxatni boshlang'ich holatga keltirish.
2. Ro'yxatni boshidan oxiriga to'g'ri yo'nalishda o'ting.
3. Har bir elementni keyingi element bilan solishtiring.
4. Agar birinchi element ikkinchidan katta bo'lsa, ularni almashtiring.
5. Ro'yxat oxiriga yetib qadar 2-4 bosqichlarni takrorlang.
Bu bosqichlar oxirida, ro'yxat elementlari tartiblangan holatga keladi.
Pufakcha usuli o'nlik darajadagi ro'yxatlarda yaxshi ishlashmaydi, 
chunki har bir bosqichda eng katta element ro'yxatning oxiriga olib 
keladi. Bu sababli, agar katta ro'yxatlarda ishlatilsa, algoritmda katta 
o'zgarishlarni va solishtirishlarni bajarish uchun ko'p vaqt va resurs 
sarflanadi.
Umuman olganda, agar oson va samarali tartiblash algoritmi kerak 
bo'lsa, boshqalar, masalan, qick sort yoki biror boshqa tartiblash 
algoritmlarini ko'rib chiqish tavsiya qilinadi.
                                       Adabiyotlar
1. Problem Solving with Algorithms and Data Structures using Python.
2.Introduction to the Design and Analysis of Algorithms
3.Algorithms in Python. 4.  https://uz.m.wikipedia.org/wiki/Quicksort
5.  https://www.texnoman.uz/blogs/algoritm
6.  https://uz.m.wikipedia.org/wiki/Insertion_sort
7.  https://www.texnoman.uz/post/2-saralash-algoritmlari.html
8.  https://poe.com/s/Vgku3UroXf0NDpDzNqET
9.Veb sayt VisuAlgo
10.GeeksforGeeks platforma

Mavzu: Pufakcha usuli bilan saralash algoritimi Reja: I. Kirish II. Bubble sort algoritmi xossalari 1.Pufakcha usuli 2. Pufakcha usulida saralash algoritmi 3.Pufakcha usulida amaliy ish III. Xulosa IV. Foydalanilgan adabiyotlar Kirish Saralash - deb, berilgan obyektlar ketma-ketligini ma`lum mantiqiy tartibda qayta joylashtirish jarayoniga aytiladi. Saralash bir necha ko`rsatkichlarga bog`liq bo`lishi mumkin. Misol uchun maktab jurnalida o'quvchilar familiyasi alifbo tartibiga ko'ra saralangan bo'ladi. Masalan bizga sonlar qatori berilgan: 8, 23, 0, -50, 100. Bu qatorni kichigidan kattasiga qarab yoki kattasidan kichigiga qarab saralashimiz mumkin. Bu saralashni amalga oshirish jarayoni Saralash algoritmi deyiladi. Saralash jarayoni taqqoslashga asoslangan jarayon hisoblanadi. Yuqoridagi sonli qatorni kichigidan kattasiga qarab tartiblaganimizda -50, 0, 8, 23, 100 ko'rinishiga keladi. Biz buni qanday amalga oshirdik. Bunda har xil usuldan foydalanish mumkin va mana

shu algoritm turlaridir Biz algoritmlardan bittasidan foydalanib yuqoridagi sonli qatorni tartiblaymiz. Avval, sonli qatordan eng kichigini topamiz va uni ro'yxatning boshiga qo'yamiz. Har bir sonni boshqasi bilan solishtirib chiqamiz. Agar son o'zidan keyingi sondan kichik bo'lsa, son shu joyida qoladi, agar katta bo'lsa sonlarning o'rnini almashtiramiz. Eng kattasini boshiga o`tkazamiz: 23, 3, 22, 1, 45, 54;(54 soni har bir son bilan solishtirilib eng katta ekani aniqlandi, 45 esa o`z o`rnida turipti) Shu tartibni davom ettiramiz: 3, 22, 1, 23, 45, 54;(23 undan keyinda turuvchi eng katta son) Yuqoridagi amalni yana davom ettiramiz: 3, 1, 22, 23, 45, 54;(22 esa davomchi) Oxirgi marta almashtirishimiz quyidagi natijani beradi: 1, 3, 22, 23, 45, 54;(1 eng kichigi) Saralangan tartib quyidagi holatga keldi: 1, 3, 22, 23, 45, 54; Bizning miyamiz o`zi optimal deb bilgan yo`nalishdan ketadi va biz uchun faqat bitta saralash algoritmi mavjud. Ammo dasturlashda bunday deb bo`lmaydi. Dasturlashga talab ortib, bu soha rivojlanib borgani sari unda bir qator sohalardagi kabi tezlikni oshirish muammosi paydo bo`ladi. Chunki ilk kompyuter tizimlarida kompyuter tizimining 30% tezligi, operativ xotirasi saralashga sarflanar edi. Shu o`rinda savol tug`iladi, operatsion tizimlarda ham saralashdan foydalaniladimi? Albatta ha! Fikrimiz isbotini hozirda keng foydalaniladigan Total Commander dasturi isbotlaydi. Unda bir necha xil saralash mavjud: fayl turi, nomi, o`zgartirilgan sanasi va o`lchami. Har birini o`sish yoki kamayish tartibida saralash mumkin. Ha aytgancha, hozirgi tizimlar 30% emas anchagina kamroq tezlik va xotira sarflashadi. Chunki tezlik masalasi tobora yuqori cho`qqiga chiqayotgan

va ishlanayotgan ma`lumotlar o`lchami oshib borayotgan bir paytda sekin ishlovchi algoritmlardan foydalanish kulguli. Ma`lumotlar o`lchamlari esa juda katta, shu sababli ularni aniq va tez saralashga ehtiyoj mavjud. Buni amalga oshirish uchun esa yangi algoritmlarga ehtiyoj tug`ila boshladi. Buni yechimi sifatida bir necha turdagi algoritmlardan foydalaniladi. Saralash algoritmimning turlari  Bubble sort  Selection sort  Insertion sort  Quick sort  Merge sort II. Bubble sort Pufakcha saralash, ba'zan cho'ktiruvchi saralash deb ataladi, oddiy tartiblash algoritmi bo'lib, u kiritilgan ro'yxat elementini element bo'yicha qayta-qayta bosib o'tadi, joriy elementni undan keyingisi bilan

taqqoslaydi va kerak bo'lganda ularning qiymatlarini almashtiradi. Ro yxat bo yicha bu o tishlar o tish vaqtida hech qanday almashtirish ʻ ʻ ʻ ʻ amalga oshirilmaguncha takrorlanadi, ya ni ro yxat to liq tartiblangan. ʼ ʻ ʻ Taqqoslash turi bo'lgan algoritm kattaroq elementlarni ro'yxatning yuqori qismiga ko'tarilishi uchun nomlangan. Pufakchani saralash nimaga o'xshaydi? Agar dasturchi yoki tahlilchi bir qator raqamlarni o'sish tartibida joylashtirmoqchi bo'lsa, pufakchani tartiblash usuli bu erda ko'rsatilgan misolga o'xshaydi.

Algoritm bir vaqtning o'zida ikkita elementni ko'rib chiqadi, chapdan o'ngga o'sish tartibida bo'lmaganlarni o'zgartiradi va keyin hech qanday raqamni almashtirmasdan o'tishni tugatmaguncha butun ketma-ketlikni aylanishni davom ettiradi. Bubble Sort uchun Python dasturi Bubble Sort - bu eng oddiy tartiblash algoritmi bo'lib, agar ular noto'g'ri tartibda bo'lsa, ulashgan elementlarni qayta-qayta almashtirish orqali ishlaydi. Pufakchali tartiblash ikki qo‘shni elementni solishtiradigan va ularni mo‘ljallangan tartibda bo‘lguncha almashtiradigan tartiblash algoritmidir. Yuzaga ko'tarilgan suvdagi havo pufakchalarining harakati kabi, massivning har bir elementi har bir iteratsiyada oxirigacha harakat qiladi. Shuning uchun u pufakchali turlanish deb ataladi. Pufakchali saralash algoritmining mohiyati kichik qiymatlarning ro’yxat yuqorisiga itarilib, yirik qiymatlarning ro’yxat pastiga surilishiga