Ümumi məntiqi və izahı
Bubble Sort məşhur sortlama alqoritmlərindən biridir. Adətən intervyularda namizədə məs bu sualı verərək proqramlaşdırma dilinin minimal səviyyəsini yoxlayırlar. Elə bu səbəbdən bu alqoritmin izahını məqalə olaraq yazmağa qərarlaşdırdım.
Alqoritmin sadə sxematik formasını sizə təqdim edirəm.
Təsəvvür edək ki, bizdə bir dənə “a” array var, hansının elementlərini kiçikdən böyüyə ardıcıllıqla düzməliyik. Ardıcıllıqla düzülməsinə sort deyəcəyik. Yuxarıda gördüyünüz sxemaya əsasən başladıqda bir dənə “ k ” veriləni ilə dövriyyə yaradırıq, həmin dövriyənin daxilində “ i ” veriləni ilə digər döviyyəni qururuq. İkinci dövriyyənin daxilində yoxlama və yerdəyişmə prosesi olur. Bütün elementlər yoxlandıqdan sonra ardıcıllıq qurulmuş olur.
“ N ” — bizim arrayın uzunluğudur.
“ k ” — dövrlərin sayı
“ i ” — arrayda elementin indexi və dövriyyə kimi istifadə olunur
“ temp ” — yerdəyişmə edərkən müvəqqəti istifadə olunan verilən.
- Bizim bir massivimiz var “a”
- Biz massivin bir “i” elementini götürürük a[i];
- Onu növbəti element ilə a[i+1] yoxlayırıq: a[i]>a[i+1];
- Əgər elementimiz a[i] növbəti a[i+1] elementindən böyükdürsə yerdəyişmə etməliyik, a[i] və a[i+1] yerlərini dəyişir.
- Yerdəyişmə etdikdən sonra ikinci dövriyyədə bir dövr tamamlanmış olur və “i”nin qiyməti 1 dənə artır. Müqaisə “ k ” dəfə olur, çünki fikir versəniz bizim ikinci dövriyyədə, dövr yalnız “i” “k”dan kiçik olduğu halda baş tutur.
- Birinci dövriyyəmiz isə, ikinci dövriyyənin dövrlərinin sayını idarə etmək üçün qurulub. Bununla biz arrayın bütün elementlərini müqaisə etmiş oluruq.
- Yəni əgər elementimiz a[i] növbəti a[i+1] elementindən böyük deyilsə heç bir yerdəyişmə olmur və dövr tamamlanaraq “i”nin qiyməti bir dənə də artaraq keçir növbəti elementə.
- Belə bir bir bütün elementləri yoxlayıb sonda biz arrayımızı azdan çoxa sortlanmış əldə edirik.
Misal üzərində izaha videodan baxa bilərsiniz.
Diqqətiniz üçün təşəkkür edirəm.
İanə: https://aytiqaqash.com/donate
Youtube: https://www.youtube.com/c/AyTiQaqa%C5%9F
Facebook Qrup: https://www.facebook.com/groups/aytiqaqash
Facebook Səhifə: https://www.facebook.com/aytiqaqash
Telegram Qrup: https://t.me/aytiqaqashlar
Telegram Kanal: https://t.me/aytiqaqash
İnstagram: https://www.instagram.com/aytiqaqash/
Twitter: https://twitter.com/aytiqaqash