14
, 9, 7, 12, 11, 2, 4,
1
, 10, 6, 8, 13]
Sababi ma’lum, arr[pivot] < arr[i] va arr[pivot] > arr[j] bo’lib qoldi. arr[i] va arr[j]
o’rnini almashtiramiz:
[
5
, 0, 3, 1, 9, 7, 12, 11, 2, 4, 14, 10, 6, 8, 13]
(O)
katta sikl ishlashda davom etadi. Biz (a) va (b) sikllarni qayta ishga tushiramiz.
Kichkina sikllar i = 4 va j = 9 holatda to’xtaydi.
[
5
, 0, 3, 1,
9
, 7, 12, 11, 2,
4
, 14, 10, 6, 8, 13]
arr[i] va arr[j] o’rnini almashtiramiz:
[
5
, 0, 3, 1, 4, 7, 12, 11, 2, 9, 14, 10, 6, 8, 13]
(O)
katta sikl ishlashda davom etadi. Biz (a) va (b) sikllarni qayta ishga tushiramiz.
Kichkina sikllar i = 5 va j = 8 holatda to’xtaydi.
[
5
, 0, 3, 1, 4,
7
, 12, 11,
2
, 9, 14, 10, 6, 8, 13]
arr[i] va arr[j] o’rnini almashtiramiz:
[
5
, 0, 3, 1, 4, 2, 12, 11, 7, 9, 14, 10, 6, 8, 13]
Endi esa i = 6, j = 5 bo’lib qoldi, ya’ni i j dan katta bo’lib ketdi. Bu degani biz
array o’rtasini topdik.
(O)
katta siklni to’xtatamiz. Endi arr[pivot] va arr[j] o’rnini
almashtiramiz.
[2, 0, 3, 1, 4,
5
, 12, 11, 7, 9, 14, 10, 6, 8, 13]
Pivot elementni arrayning kerakli joyiga qo’ydik. Endi pivotning o’ng tarafida
undan kichik sonlar, chap tarafida undan katta sonlar joylashdi.
Arrayni pivot bo’yicha ikki qismini alohida-alohida tartiblaymiz. Bizning misolda
array
[2, 0, 3, 1, 4]
va
[12, 11, 7, 9, 14, 10, 6, 8, 13]
ga bo’lindi. Aslida array o’zi bo’linmadi, biz arrayning qismlarini alohida
tartiblaymiz.
Birinchi qism
[2, 0, 3, 1, 4, ...]
pivot = 0, ya’ni arr[pivot] = 2. Yuqoridagi kabi katta
Dostları ilə paylaş: |