Адабиётлар


Бинар қидирув (тенг иккига бўлиш усули)



Download 1,18 Mb.
Pdf ko'rish
bet45/55
Sana22.02.2022
Hajmi1,18 Mb.
#94244
1   ...   41   42   43   44   45   46   47   48   ...   55
Bog'liq
malumotlar tuzilmasi va algoritmlar maruza matni

 
Бинар қидирув (тенг иккига бўлиш усули) 
Фараз қилайлик, ўсиш тартибида тартибланган сонлар массиви 
берилган бўлсин. Ушбу усулни асосий ғояси шундан иборатки, тасодифий 
қандайдир A

элемент олинади ва у Х қидирув аргументи билан 
таққосланади. АгарA
M
=Х бўлса, у ҳолда қидирув якунланади; агар A
M
бўлса, у ҳолда индекслари М дан кичик ѐки тенг бўлган барча элементларни 
келгуси қидирувдан чиқариб юборилади. Худди шунингдек, агар A
M
>X 
бўлса. 
М ихтиѐрий танланганда ҳам таклиф қилинаѐтган алгоритм коррект 
ишлайди. Шу сабабали М ни шундай танлаш лозимки, тадқиқ қилинаѐтган 
алгоритм самаралироқ натижа берсин, яъни уни шундай танлайликки, иложи 
борича келгуси жараѐнларда иштирок этувчи элементлар сони кам бўлсин. 
Агар биз ўртача элементни, яъни массив ўртасини танласак ечим мукаммал 
бўлади.
Қуйидаги чизма кўринишида берилган массивни қараб чиқайлик. 
Фараз қилайлик, биздан калити 52 га тенг бўлган элементни топиш талаб 
қилинсин. Дастлабки таққосланадиган элемент 49 бўлади. 49<52 бўлгани 
учун сабабли, кейинги қидирув 49 дан юқорида турган элементлар орасида 
амалга оширилади. Янги хосил бўлган массив ўртаси 86. Агар берилган 
калит билан ушбу калитни таққосласак 86>52 бўлади. Демак, навбатдаги 
қидирувлар 86 билан 49 орасидаги элементлар ичида амалга оширилиши 
лозим. Кейинги қадамда маълум бўлдики, қаралаѐтган элементлар 


―Маълумотлар тузилмаси ва алгоритмлар‖ фанидан маърузалар матни.
муаллиф: Б.Б.Акбаралиев 
ўртасидаги элемент калити 52 га тенг. Шундай қилиб, массивда берилган 
калитга тенг бўлган элементни топдик.
Юқоридаги алгоритмни амалга ошириш дастури С++ тилида қуйидагича 
бўлади: 
#include  
#include  
int Binsearch(int a[], int N, int key, int *t) 

int l=0, r=N-1, mid=(l+r)/2; 
while (l<=r) 
{ *t+=1; 
if (a[mid]==key) return mid; 
if (a[mid]>key) r=mid-1; 
else l=mid+1; 
mid=(l+r)/2; 

a[N]=key; 
return N; 

main () 

int i, N, mas[1000], key, P, t=0; 
cout<cin>>N; 
cout<<"Massiv elementlarini kiriting!"<for (i=0; icin>>mas[i]; 
cout<<"Qidiruv elementini kiriting!"<cin>>key; 
P=Binsearch(mas,N,key, &t); 


―Маълумотлар тузилмаси ва алгоритмлар‖ фанидан маърузалар матни.
муаллиф: Б.Б.Акбаралиев 
if (P==N) cout<<"Bunday elementni massivga qo'shis lozim"<<" "<
"<else cout<<"Bunday element bor"<<" "<
getch(); 
return 0; 

Агар key = 101 бўлса, керакли ѐзув 3 марта таққослашларда аниқланади 
(кетма-кет қидирувда таққослашлар сони 7 та бўлар эди).
Агар С – таққослашлар сони ва n – жадвалдаги элементлар сони бўлса, 
у ҳолда
С = log
2
n. 
Масалан, n = 1024.
Кетма-кет қидирувда С = 512, бинар қидирувда С = 10
Агар катта хажмдаги маълумотлар ичида қидирув амалга оширилаѐтган 
бўлса, у ҳолда бинар ва индексли кетма-кет қидирувни умумлаштириб олиб 
бориш мумкин. Сабаби, ҳар иккала қидирув ҳам тартибланган массивда 
амалга оширилади. 

Download 1,18 Mb.

Do'stlaringiz bilan baham:
1   ...   41   42   43   44   45   46   47   48   ...   55




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish