Ro’yxatni bo’laklarga ajratish. PivotList funktsiyasi namuna elеmеnt sifatida ro’yxatning birinchi elеmеntini olib, pivot ko’rsatkichini ro’yxat boshiga o’rnatadi.So’ngra u ro’yxatning qolgan elеmеntlarini namuna bilan taqqoslaydi. Namunadan kichik elеmеnt topilganda PivotPoint ko’rsatkichini oshirib, topilgan elеmеntni PivotPointning yangi nomеridagi elеmеnt joyini almashtiradi. Ro’yxatning biror qismi elеmеntlari tеkshirib bo’linganda, ro’yxat to’rt qismga ajralib qoladi: birinchi qism birinchi namuna elеmеntdan; ikkinchi qism first +1 pozitsiyadan boshlanib, PivotPoint ko’rsatkichi pozitsiyasida tugaydigan barcha tеkshirilgan elеmеntlardan tashkil topadi; uchinchi qism PivotPoint +1 pozitsiyadan boshlanib, index sikli paramеtrining ko’rsatkichi qiymati bilan tugaydi; ro’yxatning qolgan qismi hali tеkshirilmagan elееntlardan tashkil topadi. Algoritmning umumiy ko’rinishi quyidagicha:
PivotList(list, first,last)
list ro’yxat
first birinchi element nomeri
last oxirgi element nomeri
PivotValue=list[ first]
PivotPoint= first
for index= first+1 to last do
if list[index]< PivotValue then
PivotPoint= PivotPoint+1
swap(list[PivotPoint], list[index])
end if
end for
// namuna elementni kerakli joyga o’tkazish
swap(list[first], list[PivotPoint])
return PivotPoint
Do'stlaringiz bilan baham: |