1-misol.
Binar qidiruv usulidan foydalanib massiv elementlari orasida
belgilangan elementni qidirish dasturi quyida keltirilgan:
1-usul.
#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;
TOSHKENT 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; i
cin>>mas[i];
cout<<"Qidiruv elementini kiriting!"<
cin>>key;
P=Binsearch(mas,N,key, &t);
if (P==N) cout<<"Bunday elementni massivga qo'shis
lozim"<<"
"<
bor"<<"
"<
getch();
return 0;
}
#include
#include
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
{
i++;
(*t)++;
}
(*t)++;
if (i==0)
low=0;
else
low=kind[1][i-1];
if (i==m)
hi=N;
else
TOSHKENT
hi=kind[1][i]-1;
for (int j=low; j<=hi; j++)
{
(*t)++;
if( key==realArray[j] )
{
return j;
} }
return -1;
}
main ()
{
int i = 0 ,
N = 0,
mas[1000] = {0},
kind[2][1000] = {0},
key = 0,
P = 0,
index = 0,
kindIndex = 0,
t = 0;
cout<
cin>>N;
cout<<"Massiv elementlarini kiriting!"<
for (i=0; i
cin>>mas[i];
cout<<"Qidiruv elementini kiriting!"<
cin>>key;
cout<<"Boshlangich qadamni kiriting! "<
cin>>P;
i = P-1;
while(i
{
kind[0][kindIndex] = mas[i];
kind[1][kindIndex++] = i;
i += P;
}
index = InSeqsearch(mas,N,kind,kindIndex,key, &t);
if (index == -1)
cout<<"Bunday element massivda yuq "<< index <<"
"<
else
cout<<"Bunday element bor"<<" "<
"<
getch();
return 0;
}
TOSHKENT
3-usul.
#include
#include
#include
#include
struct TNode {
int value;
TNode* pnext;
};
//Ro'yhatga element qo'shish
void add2list(TNode **pphead, int val) {
TNode **pp = pphead, *pnew;
pnew = new TNode;
pnew->value=val;
pnew->pnext = *pp;
*pp = pnew;
}
//Ro'yhat elementlarini ekranga chiqarish
void print(TNode *phead)
{
TNode* p = phead;
while(p) {
cout <<" "<< p->value<<"-> ";
p = p->pnext;
}
cout << endl;
}
// Ro'yhatda element qidirish, C++
TNode* Find(TNode *phead, int x)
{
TNode *p=phead;
while(p)
if (p->value==x) return p;
else p = p->pnext;
return 0;
}
//Ro'yhat elementini o'chirish
void deleteList(TNode *phead) {
if(phead) {
deleteList(phead->pnext);
if(phead)
delete phead;
}
}
//Asosiy qism
int main() {int mas[1000], N, key; TNode* T;
clrscr();
TOSHKENT AXBOROT
TNode *phead = 0;
cout<<"Ro‟yhat uzunligini kirit"<
cin>>N;
cout<<"Elementlarni kirit!"<
for(int j=0; j
cin>>mas[j];
for(int i = 0; i < N; ++i)
add2list(&phead,mas[i]);
cout<<"Qidiruv elementni kiriting!"<
cin>>key;
cout << "Elements of the list:" << endl;
print(phead);
T=Find(phead,key);
if (T==0) cout <<"Bunday element yoq"<
else cout <<"Bunday element bor"<<" "<value<<"
"<
//deleteList(phead);
getch();
return 0;
}
4-usul.
#include
#include
int search(int a[], int N, int key, int *t)
{
int i=0;
while (i!=N)
{*t+=1;
if (a[i]==key) return i;
else i++;
}
//a[N]=key;
return -1;
}
main ()
{
int i, N, mas[1000], key, P, t=0;
cout<
cin>>N;
cout<<"Massiv elementlarini kiriting!"<
for (i=0; i
cin>>mas[i];
cout<<"Qidiruv elementini kiriting!"<
cin>>key;
P=search(mas,N,key,&t);
if (P==-1) cout<<"Bunday elementni massivga qo'shis
lozim"<<"
TOSHKENT AXBOROT "<
else cout<<"Bunday element bor"<<" "<
"<
getch();
return 0;
}
Topshiriq
Variantlar:
Ketma-ket qidiruv usulidan foydalanib, ro‘yhat eng kichik elementini toping.
Ketma-ket qidiruv usulidan foydalanib, ro‘yhatda berilgan kalitdan katta elementlarni toping.
Ketma-ket qidiruv usulidan foydalanib, ro‘yhat eng kichik elementini toping.
Ketma-ket va binar qidiruv usulidan foydalanib, A massivdan elementni va taqqoslashlar sonini toping.
Binar qidiruvdan foydalanib elementlarni tasodifiy ravishda toping.
Mashina raqamlari ro‘yhati berilgan: 345, 368, 876, 945, 564, 387, 230. Binar qidiruvdan foydalanib berilgan raqamli mashina qaysi joyda turganini toping.
Ketma-ket qidiruv usulidan foydalanib ro‘yhatda har ikkinchi elementni qidiring va taqqoslashlar sonini aniqlang.
Binar qidiruvdan foydalanib massivdan berilgan kalitga karrali kalitli elementni va solishtirishlar sonini toping.
Boshiga qo‘yish va transpozitsiya usulidan foydalanib massiv eng katta elementi topilsin.
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).
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).
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.
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.
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.
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.
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.
Boshiga qo‘yish va transpozitsiya usulidan foydalanib massiv eng kichik elementi topilsin.
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.
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.
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.
Berilgan ro‘yhatda qidirilayotgan element transpozitsiya usuli bilan qancha murojaatda ro‘yhat boshiga kelishini aniqlash dasturini tuzing.
Massivdan boshiga qo‘yish usuli yordamida key kalitli elementni izlash dasturini tuzing.
Binar qidiruv usuli yordamida massivga yangi elementni kiriting.
Binar qidiruv usuli yordamida massivning key kalitli elementini o‘chiring.
Ro‘yhatda transpozitsiya usuli yordamida toq elementlarni topish dasturini tuzing.
Berilgan massivda key kalitli elementni ketma-ket va binar qidiruv usullari yordamida izlang va qaysi usul ushbu qidiruv holatida samara berganligini aniqlash dasturini keltiring.
Talabalar ismi va umumiy ballaridan iborat jadvaldan ketma-ket qidiruv usuli bilan balli maksimal bo‘lgan talabani toping.
Talabalar ismi va umumiy ballaridan iborat jadvaldan binar qidiruv usuli yordamida so‘ralgan talabaning umumiy balini chiqarish dasturini tuzing.
Boshiga qo‘yish usuli yordamida talabalar ismlaridan iborat massiv elementlariga ko‘p marta murojaat qilib massivni qayta tartiblang.
Transpozisiya usuli yordamida talabalar ismlaridan iborat ro‘yhat elementlariga ko‘p marta murojaat qilib massivni qayta tartiblang.
Do'stlaringiz bilan baham: |