(O)
va kichik
(a) (b)
sikllarni
ishga tushiramiz. Kichik sikllar i = 2, j = 3 holatda to’xtaydi. arr[i] va arr[j]
elementlarning o’rnini almashtiramiz.
[
2
, 0, 1, 3, 4, ...]
Keyingi kichik sikllarda i = 3, j = 2 holatda to’xtaydi. i > j, demak katta siklni
to’xtatamiz va arr[pivot] hamda arr[j] o’rnini almashtiramiz.
[1, 0,
2
, 3, 4, ...]
pivot elementning chap tarafida o’zidan kichkina, o’ng tarafida o’zidan katta
elementlar joylashdi. arrayning birinchi qismini pivot bo’yicha yana ikki ajratamiz
va ularni alohida-alohida tartiblaymiz:
[0, 1, ...]
[..., 3, 4, ...]
Shunda birinchi qism tartiblanib bo’lgach, array’ning birinchi pivotdan chap qismi
tartiblandi:
[0, 1, 2, 3, 4,
5
, 12, 11, 7, 9, 14, 10, 6, 8, 13]
Ikkinchi qism
[...,
12
, 11, 7, 9, 14, 10, 6, 8, 13]
pivot = 0, ya’ni arr[pivot] = 12. Yuqoridagi kabi katta
(O)
va kichik
(a)
(b)
sikllarni ishga tushiramiz. Bunda i = 6, j = 14 dan boshlanadi. Kichik sikllar i =
10, j = 13 holatda to’xtaydi. arr[i] va arr[j] elementlarning o’rnini almashtiramiz.
[...,
12
, 11, 7, 9,
8
, 10, 6,
14
, 13]
(O)
katta sikl ishlashda davom etadi. Biz (a) va (b) sikllarni qayta ishga tushiramiz.
Kichkina sikllar i = 13 va j = 12 holatda to’xtaydi. i > j bo’lgani uchun katta sikl
ham to’xtaydi. arr[pivot] va arr[j] o’rnini almashtiramiz.
[..., 6, 11, 7, 9, 8, 10,
12
, 14, 13]
pivot element (12) ning chap tarafida o’zidan kichik elementlar, o’ng tarafida
o’zidan katta elementlar joylashdi. Endi pivot bo’yicha yana kichkina qismlarga
ajratib, ularni alohida-alohida tartiblaymiz.
2.1 qism
[..., 6, 11, 7, 9, 8, 10, ...]
2.2 qism
[..., 14, 13]
2.1 qismni tartiblashni davom ettiramiz.
2.1 qismda pivot = 6, ya’ni array’ning 6-elementi. Yuqoridagi kabi katta
Dostları ilə paylaş: |