Qabarcıqlı nizamlama və ya qabarcıqlı sıralama (ing. Bubble sort) — iki qonşu elementi müqayisə etməklə və əgər onlar səhv nizamda isə onların yerini dəyişməklə verilən siyahını təkrarla yoxlayaraq, sıralayan alqoritmdir. Alqoritmin performansı aşağıdakı kimidir:
- ən yaxşı vaxt =
- orta vaxt =
Addım-addım nümunə
"5 1 4 2 8" şəklində bir massiv götürək, və massivi artma sırasına görə sıralayaq. Hər bir addımda müqayisə olunan elementlər tünd qara ilə göstərilib. Sona qədər sıralama üçün 3 keçid lazımdır.
Birinci keçid:
( 5 1 4 2 8 ) ( 1 5 4 2 8 ), Burada alqoritm ilk iki elementi müqayisə edir və 5>1 olduğu üçün 5 ilə 1-in yerini dəyişir.
( 1 5 4 2 8 ) ( 1 4 5 2 8 ), 5 > 4 olduğu üçün
( 1 4 5 2 8 ) ( 1 4 2 5 8 ), 5 > 2 olduğu
( 1 4 2 5 8 ) ( 1 4 2 5 8 ), 5 < 8, heç bir dəyişiklik olmur.
İkinci keçid:
( 1 4 2 5 8 ) ( 1 4 2 5 8 )
( 1 4 2 5 8 ) ( 1 2 4 5 8 ), 4 > 2 olduğu üçün
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
Hal - hazırda massiv artma sırasına görə sıralanıb (nizamlanıb). Amma alqoritm bunun belə olduğunu bilmədiyi üçün elementlərin yerini dəyişmədən birdaha elementləri müqayisə edəcək.
Üçüncü keçid:
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
( 1 2 4 5 8 ) ( 1 2 4 5 8 )
İmplementasiyası
Python dilində implementasiya aşağıdakı kimi olar.
def bubblesort(A): while True: swapped = False for i in range(1,len(A)-1): if A[i-1]>A[i]: tmp=A[i-1] A[i-1]=A[i] A[i]=tmp swapped=True if swapped==False: break return A #Yuxarıdakı nümunə ilə test etsək siyahi = [5,1,4,2,8] print bubblesort(siyahi)
Cavab:
$python bubble.py [1, 2, 4, 5, 8]
wikipedia, oxu, kitab, kitabxana, axtar, tap, meqaleler, kitablar, oyrenmek, wiki, bilgi, tarix, tarixi, endir, indir, yukle, izlə, izle, mobil, telefon ucun, azeri, azəri, azerbaycanca, azərbaycanca, sayt, yüklə, pulsuz, pulsuz yüklə, haqqında, haqqinda, məlumat, melumat, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, şəkil, muisiqi, mahnı, kino, film, kitab, oyun, oyunlar, android, ios, apple, samsung, iphone, pc, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, web, computer, komputer
Qabarciqli nizamlama ve ya qabarciqli siralama ing Bubble sort iki qonsu elementi muqayise etmekle ve eger onlar sehv nizamda ise onlarin yerini deyismekle verilen siyahini tekrarla yoxlayaraq siralayan alqoritmdir Alqoritmin performansi asagidaki kimidir en yaxsi vaxt O n displaystyle O n orta vaxt O n2 displaystyle O n 2 Redakte reng qabarciq siralamaAddim addim numune 5 1 4 2 8 seklinde bir massiv goturek ve massivi artma sirasina gore siralayaq Her bir addimda muqayise olunan elementler tund qara ile gosterilib Sona qeder siralama ucun 3 kecid lazimdir Birinci kecid 5 1 4 2 8 displaystyle to 1 5 4 2 8 Burada alqoritm ilk iki elementi muqayise edir ve 5 gt 1 oldugu ucun 5 ile 1 in yerini deyisir 1 5 4 2 8 displaystyle to 1 4 5 2 8 5 gt 4 oldugu ucun 1 4 5 2 8 displaystyle to 1 4 2 5 8 5 gt 2 oldugu 1 4 2 5 8 displaystyle to 1 4 2 5 8 5 lt 8 hec bir deyisiklik olmur Ikinci kecid 1 4 2 5 8 displaystyle to 1 4 2 5 8 1 4 2 5 8 displaystyle to 1 2 4 5 8 4 gt 2 oldugu ucun 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 Hal hazirda massiv artma sirasina gore siralanib nizamlanib Amma alqoritm bunun bele oldugunu bilmediyi ucun elementlerin yerini deyismeden birdaha elementleri muqayise edecek Ucuncu kecid 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 ImplementasiyasiPython dilinde implementasiya asagidaki kimi olar def bubblesort A while True swapped False for i in range 1 len A 1 if A i 1 gt A i tmp A i 1 A i 1 A i A i tmp swapped True if swapped False break return A Yuxaridaki numune ile test etsek siyahi 5 1 4 2 8 print bubblesort siyahi Cavab python bubble py 1 2 4 5 8