56
hokazo. Kokteyl saralash berilgan massiv orqali har ikki yoʻnalishda
ham muqobil ravishda harakatlanadi.
Algoritmning har bir takrorlanishi 2 bosqichga boʻlinadi:
Birinchi bosqich massivni xuddi Bubble Sort singari chapdan
oʻngga aylantiradi. Sikl davomida qoʻshni
elementlar taqqoslanadi va
agar chapdagi qiymat oʻngdagi qiymatdan katta boʻlsa, qiymatlar
almashtiriladi. Birinchi takrorlash oxirida
eng katta son massivning
oxirida boʻladi.
Ikkinchi bosqich massivni qarama-qarshi yoʻnalishda aylantiradi -
bu eng soʻnggi saralangan elementdan
oldin va massivning boshiga
qaytish. Bu yerda qoʻshni elementlar taqqoslanadi va agar kerak boʻlsa
almashtiriladi.
Quyidagi massivni koʻrib chiqaylik (6 1 4 2 8 0 2).
Birinchi oldinga oʻtish:
(6 1 4 2 8 0 2)? (1 6 4 2 8 0 2), 6> 1 bilan
almashtirish
(1 6 4 2 8 0 2)? (1 4 6 2 8 0 2), 6> 4 bilan almashtirish
(1 4 6 2 8 0 2)? (1 4 2 6 8 0 2), 6> 2 bilan almashtirish
(1 4 2 6 8 0 2)? (1 4 2 6 8 0 2)
(1 4 2 6 8 0 2)? (1 4 2 6 0 8 2), 8> 0 bilan almashtirish
(1 4 2 6 0 8 2)? (1 4 2 6 0 2 8), 8> 2 bilan almashtirish
Birinchi oldinga oʻtishdan soʻng, massivning eng katta elementi
massivning oxirgi indeksida boʻladi.
Birinchi orqaga oʻtish:
(1 4 2 6 0 2 8)? (1 4 2 6 0 2 8)
(1 4 2 6 0 2 8)? (1 4 2 0 6 2 8), 6> 0 bilan almashtirish
(1 4 2 0 6 2 8)? (1 4 0 2 6 2 8), 2> 0 bilan almashtirish
(1 4 0 2 6 2 8)? (1 0 4 2 6 2 8), 4> 0 bilan almashtirish
(1 0 4 2 6 2 8)? (0 1 4 2 6 2 8), 1> 0 bilan almashtirish
Birinchi orqaga uzatgandan soʻng, massivning eng kichik elementi
massivning birinchi indeksida boʻladi.
57
Ikkinchi oldinga oʻtish:
(0 1 4 2 6 2 8)? (0 1 4 2 6 2 8)
(0 1 4 2 6 2 8)? (0 1 2 4 6 2 8), 4>2 bilan almashtirish
(0 1 2 4 6 2 8)? (0 1 2 4 6 2 8)
(0 1 2 4 6 2 8)? (0 1 2 4 2 6 8), 6>2 bilan almashtirish
Ikkinchi orqaga oʻtish:
(0 1 2 4 2 6 8)? (0 1 2 2 4 6 8), 4>2 bilan almashtirish
Endi,
massiv allaqachon saralangan, ammo bizning algoritmimiz
tugallanganligini bilmaydi. Algoritm bu saralanganligini
bilish uchun
barcha oʻtishlarni hech qanday almashtirishsiz bajarishi kerak.
(0 1 2 2 4 6 8) ? (0 1 2 2 4 6 8)
(0 1 2 2 4 6 8) ? (0 1 2 2 4 6 8)
Quyida yuqoridagi algoritmning bajarilishi keltirilgan: