Tartibli statistikani topishning chiziqli usullari




Download 37,56 Kb.
bet7/8
Sana14.05.2024
Hajmi37,56 Kb.
#233609
1   2   3   4   5   6   7   8
Bog'liq
Mirzo Ulug’bek nomidagi O’zbekiston Milliy universiteti Jizzax f-www.hozir.org

Tartibli statistikani topishning chiziqli usullari. Select protsedurasida yomon holatda bajarilish vaqti O(n) tartida bo‘lishini ko‘rsatish uchun chiziqli vaqtda shunday tayanch elementni tanlash kerakki, o‘lchami boshlang‘ich to‘plamning fiksirlangan qismidan katta bo‘lmagan ikkita qism to‘plamga bo‘linsin. Masalan, (1.14) tengsizlikni echish shuni ko‘rsatadiki, agar tayanch element (n/10)- tartibdagi elementdan kichik bo‘lmasa va (9n/10)-tartibdagi elementdan katta bo‘lmasa 9/10 boshlang‘ich to‘plamdan oshmaydigan qism to‘plamlarga bo‘ladi, bu esa eng yomon holatda algoritm chiziqli vaqtda bajarilishini kafolatlaydi.
«Yaxshi» tayanch elementni quyidagi ikki qadam vositasida topish mumkin.
1. n ta elementni boshqa guruhga kirmagan 1-4 elementlar chetga qo‘yib, 5 ta elementdan iborat guruhlarga bo‘lish. 5 ta elementdan iborat har bir guruh o‘sish tartibida ixtiyoriy algoritm bilan tartiblanadi va har bir guruhdan o‘rtacha element olinadi. Bunday o‘rtacha elementlar jami bo‘lib [n/5] bo‘ladi.
2. select protsedurasi ishlatilib, o‘rtacha elementlarning medianasi topiladi. Agar [n/5] juft bo‘lsa, o‘rtachaga yaqin bo‘lgan element olinadi. Ixtiyoriy holatda o‘rtacha elementlarning tartiblangan ro‘yxatidagi [(n+5)/10] pozitsiyada turgan element topiladi.
1.6-dastur. k- tartibli statistikani topishning chiziqli algoritmi
function select (i, j, k: integer ): keytype;
{ Funksiya A[i], ..., A[j] dan k- elementning kalit qiymatini qaytaradi}
var

m: integer; {indeks sifatida ishlatiladi }


begin

(1) if j-i<74 then begin


(2) A[i], ..., A[j] ni tartiblash oddiy algoritm bilan;
(3) return(A[i+k-1].key)
end

else begin { select rekursiv ishlatiladi}


(4) for m:= 0 to (j-i-4) div 5 do
{5-ta elementdan iborat guruhda o‘rtacha elementlarni topish}
(5) guruhda kattaligi bo‘yicha 3-bo‘lgan elementni topish
A[i+5*m], ..., A[i+5*m+4] va
uni s A[i+m] bilan o‘rnini almashtirish;
(6) pivot:= select(i, i+(j-i-4) div 5,(j-i-4) div 10);
{o‘rtacha elementlarning medianasini topish}
(7) m:= partition(i, j, pivot);
(8) if k<=m-i then
(9) return(select(i, m-1, k) )
else

(10) return(select(m, j, k-(m-i)))


end

end; { select }


procedure sort (l,r: integer);
begin
| if (l = r) then begin
| | nichego delat ne nado - uchastok pust
| end else begin
| | vыbrat sluchaynoe chislo s v poluintervale (l,r]
| | b := a[s]
| | perestavit elementы sortiruemogo uchastka tak, chtobы
| | snachala shli elementы, menshie b - uchastok (l,ll]
| | zatem elementы, ravnыe b - uchastok (ll,rr]
| | zatem elementы, bolshie b - uchastok (rr,r]
| | sort (l,ll);
| | sort (rr,r);
| end;
end;



Download 37,56 Kb.
1   2   3   4   5   6   7   8




Download 37,56 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Tartibli statistikani topishning chiziqli usullari

Download 37,56 Kb.