O‘ZBEKISTON RESPUBLIKASI OLIY VA O‘RTA MAXSUS TA‘LIM VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI
KOMPYUTER INJINIRINGI FAKULTETI
MUSTAQIL ISH
Fan: Маълумотлар тузилмаси ва алгоритмлар фанидан
MAVZU: Ketma-ket va binar qidiruv usullari orqali 1 dan n gacha bo’lgan sonlar ichidan ixtiyoriy elenementni topish dasturini tuzing va samaradorligini tahlil qiling?
BAJARDI: Tolliboyev.O.
Tekshirdi: Xujayorov.I.
SAMARQAND 2022
REJA:
1.Binar qidiruv usullari?
2. 1 dan n gacha bo’lgan sonlar ichidan ixtiyoriy elenementni topish dasturini tuzing?
3.Ketma-ket qidiruv tizimi?
Tayanch iboralar:
Binar,qidiruv tizimi, Chiziqli va binar qidiruv,1 dan n,C++.
Mazkur ko’rinishdagi qidiruv agar ma’lumotlar tartibsiz yoki ular tuzilishi noaniq bo’lganda qo’llaniladi. Bunda ma’lumotlar butun jadval bo’yichida operativ xotirada kichik adresdan boshlab, to katta adresgacha ketma-ket qarab chiqiladi. Massivda qidiruv (search o’zgaruvchi topilgan ele-ment tartib raqamini saqlaydi). Ketma ket qidiruv algoritmi C++ tilida quyidagicha bo’ladi:
int qidiruv(int key){
for (int i=0;i<="" p="">
if (k[i]==key) { search = i;return search;}
search = -1;
return search;
}}
Massivda ketma-ket qidiruv algoritmi samaradorligini bajarilgan taqqoslashlar
soni M bilan aniqlash mumkin. Mmin = 1, Mmax = n. Agar ma’lumotlar
massiv yacheykasida bir xil ehtimollik bilan taqsimlangan bo’lsa, u holda Mo’
(n + 1)/2 bo’ladi.
Agar kerakli element jadvalda yo’q bo’lib, uni jadvalga qo’shish lozim bo’lsa, u holda yuqorida keltirilgan algoritmdagi oxirgi ikkita operator quyidagicha almashtiriladi.
n=n+1;
k[n-1]:=key;
r[n-1]:=rec;
search:=n-1;
return search;
Agar ma’lumotlar jadvali bir bog’lamli ro’yhat ko’rinishida berilgan bo’lsa (2.1rasm), u holda ketma-ket qidiruv ro’yhatda amalga oshiriladi.
Chiziqli bir bog’lamli ro’yhatdan key kalitga mos elementni ketma-ket
qidiruv usuli yordamida izlab topish dasturi.
Node *q=NULL;
Node *p=lst;
while (p !=NULL){
if (p->k == key){
search = p;
return search;
}
q = p;
p = p->nxt;
}
Node *s=new Node;;
s->k=key;
s->r=rec;
s->nxt= NULL;
if (q == NULL){ s->nxt=lst; lst = s; }
else q->nxt = s;
search= s;
return search;
Ro’yhatli tuzilmaning afzalligi shundan iboratki, ro’yhatga elementni qo’shish yoki o’chirish tez amalgaoshadi, bunda qo’shish yoki o’chirish element soniga bog’liq bo’lmaydi, massivda esa elementni qo’shish yoki o’chirish o’rta hisobda barcha elementlarning yarmini siljitishni talab qiladi. Ro’yhatda qidiruvning samaradorligi taxminan massivniki bilan bir xil bo’ladi.
Faraz qilaylik, o’sish tartibida tartiblangan sonlar massivi berilgan bo’lsin. Ushbu usulning asosiy g’oyasi shundan iboratki, tasodifiy qandaydir va u X qidiruv argumenti bilan taqqoslanadi. Agar AM=X bo’lsa, u holda qidiruv yakunlanadi; agar AM<="" p="">bo’lgan barcha elementlar kelgusi qidiruvdan chiqarib yuboriladi. Xuddi shuningdek, agar AM >X bo’lsa, u holda indekslari M dan katta bo’lgan barcha elementlar kelgusi qidiruvdan chiqarib yuboriladi. M ixtiyoriy tanlanganda ham taklif qilinayotgan algoritm korrekt ishlaydi. Shu sababali M ni shunday tanlash lozimki, tadqiq qilinayotgan algoritm samaraliroq natija bersin, ya’ni uni shunday tanlaylikki, iloji boricha kelgusi jarayonlarda ishtirok etuvchi elementlar soni kam bo’lsin. Agar biz o’rtacha , ya’ni massiv o’rtasini tanlasak yechim mukammal bo’ladi.
Do'stlaringiz bilan baham: |