O’zbekiston Respublikasi Axborot Texnologiyalari va Kommunikatsiyalarini Rivojlantirish Vazirligi
Muhammad al-Xorazmiy nomidagi
Toshkent Axborot Texnologiyalari
Universiteti Telekommunikatsiya fakulteti
2- bosqich 412-19-guruh talabasi
O’rinboyev Qobiljonning
Malumotlar tuzilmasi va algoritmlash
fanidan bajargan
2-AMALIY ISHI
QIDIRUV USULLARINI TADQIQ QILISH
Ishdan maqsad: talabalar berilgan tuzilmaning shakliga qarab biror kalitga mos elementni qidirishning optimal usulini qo’llashni o’rganishlari va qidiruv usullarining samaradorligini taqqoslashlari kerak.
Qo’yilgan masala: topshiriq variantidagi masalani so’ralayotgan qidiruv usuli yordamida yechishning C++ tilidagi dasturini yaratish ko’nikmasiga ega bo’lish.
Ish tartibi:
Laboratoriya ishi nazariy ma’lumotlarini o’rganish;
Berilgan topshiriqningalgoritmini ishlab chiqish;
C++dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.
Transpozitsiya usuli
Ushbu usulda topilgan element ro‘yhatda bitta oldingi element bilan o‘rin almashtiriladi. Agarda mazkur elementga ko‘p murojaat qilinsa, bittadan oldinga surilib borib natijada ro‘yhat boshiga kelib qoladi. Ushbu usulning afzalligi shundaki, tuzilmada ko‘p murojaat qilinadigan elementlar ro‘yhat boshiga bitta qadam bilan intiladi.
Ushbu usulning qulayligi u nafaqat ro‘yhatda, balki tartiblanmagan massivda ham samarali ishlaydi (sababi faqatgina ikkita yonma-yon turgan element o‘rin almashtiriladi).
Bu usulda uchta ko‘rsatkichdan foydalanamiz (5.3-rasm):
p – ishchi ko‘rsatkich
q – yordamchi ko‘rsatkich, p dan bitta qadam orqada bo‘ladi
s – yordamchi ko‘rsatkich, p dan ikkita qadam orqada bo‘ladi.
5
.3-rasm. transpozitsiya usuli bilan qayta ro’yhatni qayta tartibga keltirish
Biz tomonimizdan topilgan uchinchi element ro‘yhat boshiga bir qadam suriladi (ya’ni ikkinchi bo‘lib qoladi). Birinchi element ko‘rsatkichi uchinchi elementga joylashtiriladi, ikkinchi element ko‘rsatkichi to‘rtinchi, shunday qilib uchinchi element ikkinchi joyga joylashib qoladi. Agar mazkur elementga yana bir bor murojaat qilinsa, u holda u ro‘yhat boshida bo‘lib qoladi.
node *s=NULL;
node *q=NULL;
node *p=table;
while (p != NULL){
if (key == p->k){ //transponerlaymiz
if( q ==NULL){//o‘rinlashtirish shart emas
search=p;
exit(0);}
q->nxt=p->nxt;
p->nxt=q;
if (s == NULL) table = p;
else s->nxt = p;
search=p;
exit(0);}
s=q;
q=p;
p=p->nxt;}
search=NULL;
exit(0);
TOPSHIRIQ
1-VARIANT
Savol:
|
Ketma-ket qidiruv usulidan foydalanib, ro‘yhat eng kichik elementini toping.
|
Dastur kodi:
#include
#include
using namespace std;
int search(int a[], int N)
{int i=0;
int min_value = a[0];
for (i=0; i
for (int j=0; j
if(min_value > a[j]) {
min_value = a[j]; }} }
return min_value;}
main ()
{ int i, N, mas[1000], key, P;
cout<<"Ro'yxat uzunligini kiriting!"<
cin>>N;
cout<<"Ro'yxat elementlarini kiriting!"<
for (i=0; i
cin>>mas[i];
P=search(mas,N);
cout << "Eng kichik elementi : " << P << endl;
getch();
return 0;}
Dastur natijasi:
Do'stlaringiz bilan baham: |