key
kalitga mos elementni izlash chegaralarini aniqlab olamiz. Dastlab u
[0,n]
oralig„ida, ya‟ni
low=0,hi=n
.
4.
Agar
low<=hi
bo„lsa, oraliq o„rtasini hisoblaymiz.
mid=(low+hi)/2
5.
Agar
mid
o„rnida turgan talaba adresi TTJ bo„lsa, element topildi,
search=mid
va 7-qadamga o„tiladi, aks holda keyingi qadamga o„tiladi.
6.
Agar “TTJ” so„zi alifbo bo„yicha
mid
o„rnida turgan talaba adresi
qiymatidan kichik bo„lsa, izlash quyi chegarasi o„zgaradi, ya‟ni
mid
o„rnida turgan
elementdan bitta oldingi elementgacha olinadi, ya‟ni
hi=mid-1.
Aks holda, yuqori
chegara o„zgaradi –
mid
dan keyingi elementdan to oxirgi elementlar oralig„i
olinadi, ya‟ni
low=mid+1
. 4-qadamga o„tiladi.
7.
Agar topilgan elementdan oldin turgan elementning (
mid-1
) ham adres
maydoni TTJ bo„lsa,
search--,
ya‟ni bitta oldingi elementga o„tamiz va shu
qadamni boshidan bajaramiz. Aks holda keyingi qadamga o„tiladi.
8.
Joriy (
search
ko„rsatayotgan) elementdan boshlab adresi “TTJ” ga teng
bo„lgan talaba ma‟lumotlarini ekranga chiqaramiz. Agar adresi “TTJ” dan farq
qiladigan talaba chiqib qolsa, algoritm tugallanadi.
Dastur kodi
#include
using namespace std;
int main(){
int n;cout<<"n=";cin>>n;
105
struct Guruh{
string fio,adres;
}talaba[n];
for(int i=0;i
cout<>talaba[i].fio;
cout<<"adres=";cin>>talaba[i].adres;
}
//jadval binar qidiruv olib boriladigan maydoni bo‘yicha tartiblangan
//bo‘lishi kerak
for(int i=0;i
for(int j=i+1;j
if(talaba[i].adres>talaba[j].adres){
Guruh h=talaba[i];
talaba[i]=talaba[j];
talaba[j]=h;
}
for(int i=0;i
cout<
cout<
int low = 0,hi = n-1,search=-1,q=0;
string key="TTJ";
while(low<=hi){
int mid = (low + hi) / 2;
q++;
if (key == talaba[mid].adres){
search = mid;
break;
}
if (key < talaba[mid].adres)
hi = mid - 1;
106
else low = mid + 1;
}
if(search!=-1) cout<<"qidirilayotgan el "<
turibdi va "<
else {cout<
system("PAUSE");
return EXIT_SUCCESS;
}
while(talaba[search-1].adres==key) search--;
while(talaba[search].adres==key) {
cout<
"<
search++; }
system("pause");
}
Dastur natijasi:
n=5
1-talabaning fio=fam1
adres=Toshkent
2-talabaning fio=fam2
adres=TTJ
3-talabaning fio=fam3
adres=ijarada
4-talabaning fio=fam4
adres=uchastkada
5-talabaning fio=fam5
adres=TTJ
fam2 TTJ
fam5 TTJ
fam1 Toshkent
107
fam3 ijarada
fam4 uchastkada
qidirilayotgan el 1-orinda turubdi va 2 ta solishtirishda topildi
fam2 TTJ
fam5 TTJ
Nazorat savollari
1.
Qanday qidiruv algoritmlarini bilasiz?
2.
Qidiruv jarayonining tezligi nimalarga bog‟liq?
3.
Statik tuzilmadan birorta elementni izlashning qanday usullari mavjud?
4.
Ro‟yhat tuzilmasidan elementlarni izlab topish tezligini oshirish uchun
qanday algoritmlar mavjud?
5.
Binar qidiruvni ro‟yhat tuzilmasiga qo‟llab bo‟ladimi? Sababini asoslang.
Topshiriq
Variantlar:
1.
Ketma-ket qidiruv usulidan foydalanib, ro„yhat eng kichik elementini
toping.
2.
Ketma-ket qidiruv usulidan foydalanib, ro„yhatda berilgan kalitdan katta
elementlarni toping.
3.
Ketma-ket qidiruv usulidan foydalanib, ro„yhat eng kichik elementini
toping.
4.
Ketma-ket va binar qidiruv usulidan foydalanib, A massivdan elementni
va taqqoslashlar sonini toping.
5.
Binar qidiruvdan foydalanib elementlarni tasodifiy ravishda toping.
6.
Mashina raqamlari ro„yhati berilgan: 345, 368, 876, 945, 564, 387, 230.
Binar qidiruvdan foydalanib berilgan raqamli mashina qaysi joyda turganini
toping.
7.
Ketma-ket qidiruv usulidan foydalanib ro„yhatda har ikkinchi elementni
qidiring va taqqoslashlar sonini aniqlang.
8.
Binar qidiruvdan foydalanib massivdan berilgan kalitga karrali kalitli
elementni va solishtirishlar sonini toping.
108
9.
Boshiga qo„yish va transpozitsiya usulidan foydalanib massiv eng katta
elementi topilsin.
10.
Boshiga qo„yish usulidan foydalanib ro„yhatda 11 ga butun bo„linuvchi
eng katta sonni toping (agar bunday sonlar ko„p bo„lsa, u holda ularning eng
kattasini toping; agar bunday son mavjud bo„lmasa – shunga mos ma‟lumot
chiqaring).
11.
Transpozitsiya usulidan foydalanib ro„yhatda 11 ga butun bo„linuvchi
eng katta sonni toping (agar bunday sonlar ko„p bo„lsa, u holda ularning eng
kichigini toping; agar bunday son mavjud bo„lmasa – shunga mos ma‟lumot
chiqaring).
12.
Boshiga qo„yish usulidan foydalanib ro„yhatda qo„shni elementlari
ayrimasi 72 dan kichik bo„lgan elementni toping. Agar bunday elementlar ko„p
bo„lsa, u holda ularning eng kattasini toping; agar bunday element mavjud
bo„lmasa – shunga mos ma‟lumot chiqaring.
13.
Transpozitsiya usulidan foydalanib ro„yhatda qo„shni elementlari
bo„linmasi juft son bo„lgan elementni toping. Agar bunday elementlar ko„p bo„lsa,
u holda ularning eng kattasi yoki eng kichigini toping; agar bunday element
mavjud bo„lmasa – shunga mos ma‟lumot chiqaring.
14.
Boshiga qo„yish usulidan foydalanib ro„yhatda qo„shni elementlar
ayrimasi juft bo„lgan elementni toping. Agar bunday elementlar ko„p bo„lsa, u
holda ularning eng kattasi yoki eng kichigini toping; agar bunday element mavjud
bo„lmasa – shunga mos ma‟lumot chiqaring.
15.
Transpozitsiya usulidan foydalanib ro„yhatda kerakli elementgacha
bo„lgan elementlarning o„rta arifmetigi 12 ga teng bo„lgan element topilsin. Agar
bunday element mavjud bo„lmasa – shunga mos ma‟lumot chiqaring.
16.
Boshiga qo„yish usulidan foydalanib ro„yhatda 10 ga bo„linuvchi
maksimal elementni toping. Agar bunday element mavjud bo„lmasa – shunga mos
ma‟lumot chiqaring.
17.
Boshiga qo„yish va transpozitsiya usulidan foydalanib massiv eng kichik
elementi topilsin.
109
18.
Transpozitsiya usulidan foydalanib ro„yhatda qo„shni elementlari
ayirmasi juft va 3 ga bo„linadigan elementni toping. Agar bunday element mavjud
bo„lmasa – shunga mos ma‟lumot chiqaring.
19.
Boshiga qo„yish usulidan foydalanib ro„yhatda kerakli elementdan
keyingi elementlarning o„rtacha kvadratik qiymati 10 dan kichik bo„lgan elementni
toping. Agar bunday elementlar ko„p bo„lsa, u holda ularning eng kattasini toping;
agar bunday element mavjud bo„lmasa – shunga mos ma‟lumot chiqaring.
20.
Transpozitsiya usulidan foydalanib har bir x element uchun tg(x)
qiymatini aniqlang va eng katta qiymatga ega bo„lgan elementni 1-o„ringa qo„ying.
21.
Berilgan ro„yhatda qidirilayotgan element transpozitsiya usuli bilan
qancha murojaatda ro„yhat boshiga kelishini aniqlash dasturini tuzing.
22.
Massivdan boshiga qo„yish usuli yordamida key kalitli elementni izlash
dasturini tuzing.
23.
Binar qidiruv usuli yordamida massivga yangi elementni kiriting.
24.
Binar qidiruv usuli yordamida massivning key kalitli elementini
o„chiring.
25.
Ro„yhatda transpozitsiya usuli yordamida toq elementlarni topish
dasturini tuzing.
26.
Berilgan massivda key kalitli elementni ketma-ket va binar qidiruv
usullari yordamida izlang va qaysi usul ushbu qidiruv holatida samara berganligini
aniqlash dasturini keltiring.
27.
Talabalar ismi va umumiy ballaridan iborat jadvaldan ketma-ket qidiruv
usuli bilan balli maksimal bo„lgan talabani toping.
28.
Talabalar ismi va umumiy ballaridan iborat jadvaldan binar qidiruv usuli
yordamida so„ralgan talabaning umumiy balini chiqarish dasturini tuzing.
29.
Boshiga qo„yish usuli yordamida talabalar ismlaridan iborat massiv
elementlariga ko„p marta murojaat qilib massivni qayta tartiblang.
30.
Transpozisiya usuli yordamida talabalar ismlaridan iborat ro„yhat
elementlariga ko„p marta murojaat qilib massivni qayta tartiblang.
|