O’ZBEKITON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalari Universiteti
MUSTAQIL ISH
Mavzu: Қидирув ва унинг вазифаси. Индексли кетма-кет қидирув алгоритми ва унинг қўлланиши ДТини тузинг.
Guruh: 215-20
Bajardi:Xudoyberdiyev Eldor
Tekshirdi: Akbarova. M
Reja:
1.Қидирув тушунчаси ва вазифаси
2.Индексли кетма-кет қидирув алгоритми
3. Индексли кетма-кет қидирув процедураси 4. фойдаланилган адабиётлар рўйхати
1.Маълумотларни қайта ишлашда қидирув асосий амаллардан бири бўлиб, унинг вазифаси берилган аргумент (калит) бўйича маълумотлар базаси ичидан мазкур аргументга мос маълумотларни топиш ёки йўқлигини аниқлашдан иборат.
Агар керакли маълумот йўқ бўлса, у ҳолда иккита ишни амалга ошириш мумкин:
маълумот йўқлигини белгилаш;
жадвалга маълумотни қўйиш.
Ихтиёрий маълумотлар мажмуаси жадвал ёки файл деб аталади. Ихтиёрий маълумот (ёки тузилма элементи) бошқа маълумотдан бирор бир белгиси орқали фарқ қилади. Мазкур белги калит деб
аталади.
Калит икки ҳил бўлиши мумкин:
бирламчи(такрорланмайди, ноёб);
иккиламчи(такрорланади). Таъриф. Агар калитлар маълумотлар жадвалидан ажратиб олиниб алоҳида файл сифатида сақланса, у ҳолда бундай калитлар ташқи калитлар дейилади. Акс ҳолда, яъни ёзувнинг бир майдони сифатида жадвалда сақланса ички калит дейилади.
Қидирувнинг мақсади - қуйидаги жараёнларнинг бирини бажарилишидан иборат:
топилган ёзувни ўқиш;
қидирилаётган ёзув топилмаса, уни жадвалга қўйиш;
топилган ёзувни ўчириш.
Фараз қилайлик, k – калитлар массиви бўлсин. Ҳар бир k(i) учун r(i) – маълумот мавжуд. Key – қидирув аргументи.
Жадвалдаги маълумотларнинг тузилмасига қараб қидирувни бир неча турлари мавжуд.
2. Mazkur ko’rinishdagi qidiruv agar ma’lumotlar tartibsiz yoki ular tuzilishi noaniq bo’lganda qo’llaniladi. Bunda ma’lumotlar butun jadval bo’yicha operativ xotirada kichik adresdan boshlab, to katta adresgacha ketma-ket qarab chiqiladi.
Massivda ketma-ket qidiruv (search o’zgaruvchi topilgan element tartib raqamini saqlaydi).
Ketma-ket qidiruv algoritmi C++ tilida quyidagicha bo’ladi:
int qidiruv(int key)
{ for (int i=0;i
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’rt (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 , 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 amalga oshadi, 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.
3. int InSeqsearch(int realArray[], int N, int kind[2][1000],int m,int key, int *t)
{
int i=0, low = 0, hi = 0;
while ((i
(*t)++;
|
|
|
if (i==0)
|
low=0;
|
else
|
low=kind[1][i-1];
|
if (i==m)
|
hi=N;
|
else
|
hi=kind[1][i]-1;
|
for (int j=low; j<=hi; j++)
{(*t)++;
if( key==realArray[j] )
{
return j;
}
}
return -1;
}
Фараз қилайлик, калитлар тенг эхтимолли билан текис тақсимланган, у ҳолда самарадорликни қуйидагича ҳисоблаш мумкин:
С = (m+1)/2 + (p+1)/2 =
|
|
→
|
|
|
|
(n/p+1)/2 + (p+1)/2 = n/2p+p/2+1, бу ерда:
|
индекс ўлчови; m = n / p;
|
p – қадам ўлчови. →
|
|
|
|
|
dС/dp=(d/dp) (n/2p+p/2+1)= - n / 2 p2 + 1/2 = 0
|
p2=n
|
pопт=
|
|
|
|
|
|
|
|
|
|
|
|
n
|
|
|
|
O
|
Демак, индексли кетма-кет қидирувни самарадорлиги тартиби
|
|
|
4. фойдаланилган адабиётлар рўйхат
Mалумотлар тузилмаси ва алгоритимлар Akbaraliyev B.B. Yusupova Z.Dj.
Интернет манбалари
Do'stlaringiz bilan baham: |