Qidiruv usullarini tadqiq qilish


Ketma-ket qidiruv algoritmi


Download 203.05 Kb.
Pdf ko'rish
bet2/2
Sana18.02.2023
Hajmi203.05 Kb.
#1210125
1   2
Bog'liq
Abduxoliqov Asadulla 2-amaliy ish

1.1. Ketma-ket qidiruv algoritmi 
 
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. M
min
 = 1, M
max
 = n. Agar 
ma’lumotlar massiv yacheykasida bir xil ehtimollik bilan taqsimlangan bo’lsa, u 
holda M
ort
(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 
(5.1-rasm), u holda ketma-ket qidiruv ro’yhatda amalga oshiriladi. 
5.1-rasm. Bir bog’lamli ro’yhatning ko’rinishi 
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. 


Savol:
Ketma-ket qidiruv usulidan foydalanib, ro‘yhatda berilgan kalitdan 
katta elementlarni toping.
#include  
using namespace std; 
int countGreater(int arr[], int n, int k) 

int l = 0; 
int r = n - 1; 
int leftGreater = n; 
while (l <= r) { 
int m = l + (r - l) / 2; 
if (arr[m] > k) { 
leftGreater = m; 
r = m - 1; 

else 
l = m + 1; 

return (n - leftGreater); 

int main() 

int arr[] = { 3, 7, 13,19,20}; 
int n = sizeof(arr) / sizeof(arr[0]); 
int k = 19; 
cout << countGreater(arr, n, k); 
return 0; 



Xulosa 
Men bu mavzudan olgan xulosalarim shuki malumotlarni ketma-ket 
qidirishda o`rgandim. 
 

Document Outline

  • Chiziqli bir bog’lamli ro’yhatdan key kalitga mos elementni ketma-ket qidiruv usuli yordamida izlab topish dasturi.

Download 203.05 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling