O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarni rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti


Download 458.87 Kb.
Pdf ko'rish
Sana30.05.2020
Hajmi458.87 Kb.
#111979
Bog'liq
CAL mustaqil ish


O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA 

KOMMUNIKATSIYALARNI RIVOJLANTIRISh VAZIRLIGI 

MUHAMMAD AL-XORAZMIY NOMIDAGI  

TOShKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI

 

 



“Algoritmlarni loyihalash” 

fanidan 

Mustaqil ish 

Mavzu: Qidiruv algoritmlari va ularning vazifalari

 

                      

 

     Bajardi:  CAL 005 – guruh talabasi 



Ro’ziboyev Nodirbek 

 

 



 

Toshkent 2020 

 

 



Mavzu: Qidiruv algoritmlari va ularning vazifalari

 

  

      Kompyuterda  ma`lumotlarni  qayta  ishlashda  qidiruv  asosiy  amallardan  biri 



hisoblanadi.  Uning  vazifasi  berilgan  argument  bo’yicha  massiv  ma`lumotlari  ichidan 

mazkur  argumentga  mos  ma`lumotlarni  topish  yoki  bunday  ma`lumot  yo’qligini 

aniqlashdan iborat.   

      Ixtiyoriy ma`lumotlar majmuasi jadval yoki fayl deb ataladi. Ixtiyoriy ma`lumot (yoki 

tuzilma elementi) boshqa ma`lumotdan biror bir belgisi orqali farq qiladi. Mazkur belgi 

kalit deb ataladi. Kalit noyob bo’lishi, ya`ni mazkur kalitga ega ma`lumot jadvalda yagona 

bo’lishi mumkin. Bunday noyob kalitga boshlang’ich (birinchi) kalit deyiladi. Ikkinchi 



kalit  bir  jadvalda  takrorlansada  u  orqali  ham  qidiruvni  amalga  oshirish  mumkin. 

Ma`lumotlar kalitini bir joyga yig’ish (boshqa jadvalga) yoki yozuv sifatida ifodalab bitta 

maydonga  kalitlarni  yozish  mumkin.  Agar  kalitlar  ma`lumotlar  jadvalidan  ajratib  olinib 

alohida fayl sifatida saqlansa, u holda bunday kalitlar tashqi kalitlar deyiladi. Aks holda, 

ya`ni yozuvning bir maydoni sifatida jadvalda saqlansa ichki kalit deyiladi.  

      Kalitni  berilgan  argument  bilan  mosligini  aniqlovchi  algoritmga  berilgan  argument 

bo‟yicha  qidiruv  deb  ataladi.  Qidiruv  algoritmi  vazifasi  kerakli  ma`lumotni  jadvaldan 

topish yoki yo‟qligini aniqlashdan iboratdir. Agar kerakli ma`lumot yo’q bo‟lsa, u holda 

ikkita ishni amalga oshirish mumkin:  

      1. Ma`lumot yo‟qligini indikatsiya qilish (belgilash)  

      2. Jadvalga ma`lumotni qo’yish.  

      Faraz qilaylik, k – kalitlar massivi. Har bir k(i) uchun r(i) – ma`lumot mavjud. Key – 

qidiruv  argumenti.  Unga  rec  -  informatsion  yozuv  mos  qo’yiladi.  Jadvaldagi 

ma`lumotlarning tuzilmasiga qarab qidiruvning bir necha turlari mavjud. 

Ma’lumotlarni qidirish algoritmlari bu – to’plam ma’lumotlar orasidan ma’lum bir kalit 

so’zga mos keluvchi elementlarni qidirshga aytiladi. Hozirgi davrda qidiruv algoritmlarisiz 

ishaydigan IT tizimlar deyarli mavjud emas.   

Ma’lumotlarni qidirish algoritimlari odatda ikki toifaga bo’linadi bular quyidagilar: 

1.  Tarkibiy qidiruv: Bunda ro'yxat yoki qator ketma-ket o'tkaziladi va har bir element 

tekshiriladi. Masalan chiziqli qidiruv.  



Chiziqli  qidiruv  –  bunda  berilgan  kalit  chiziqli  ketma  ketlikda  to’plam  elementlari 

orasidan qidirib chiqiladi. Bu algoritm ancha sodda lekin sekin hisoblanadi. 

 


 

 

2.  Intervalli  qidirish:  Ushbu  algoritmlar  maxsus  ajratilgan  ma'lumotlar  tuzilmalarida 



qidirish uchun mo'ljallangan. Ushbu turdagi qidiruv algoritmlari Linear Search-ga 

qaraganda ancha samaralidir, chunki ular qayta-qayta qidiruv tuzilmasi markaziga 

yo’naladi va qidiruv maydonini ikkiga bo’ladi. Masalan: Ikkilik qidiruv. 

 

Ikkilik  qidiruv  algoritmi  –  Bu  algoritm  asosan  to’plamni  ikkiga  bo’lishlar  orqali 

qidirishdan iborat. Yani unda bo’linishlar toki kalit so’z topilmagunicha davom etadi. 

 

 



 

 

Yuqoridagilardan tashqari qidiruv algoritmlarini quyidagi turlari mavjud: 



 

•  Jump Search. 

•  Interpolatsiya qidiruvi. 

•  Eksponensial qidiruv. 

•  Sublist qidiruv. Va h-k. 

 


Misol  tariqasida  Ikkilik  qidiruvni  rekursiv  shaklda  Java  dasturlash  tilida  ifoda 

qiladigan bo’lsey quyidagi ko’rinishga ega bo’ladi: 

 

class BinarySearch {  



 

int binarySearch(int arr[], int l, int r, int x)  

 

{  


 

 

if (r >= l) {  



 

 

 



int mid = l + (r - l) / 2;  

 

 



 

if (arr[mid] == x)  

 

 

 



 

return mid;  

 

 

 



if (arr[mid] > x)  

 

 



 

 

return binarySearch(arr, l, mid - 1, x);  



 

 

 



//  

 

 



 

return binarySearch(arr, mid + 1, r, x);  

 

 

}  



 

 

//  



 

 

return -1;  



 

}  


 

 

//  



 

public static void main(String args[])  

 

{  


 

 

BinarySearch ob = new BinarySearch();  



 

 

int arr[] = { 2, 3, 4, 10, 40 };  



 

 

int n = arr.length;  



 

 

int x = 10;  



 

 

int result = ob.binarySearch(arr, 0, n - 1, x);  



 

 

if (result == -1)  



 

 

 



System.out.println("Element topilmadi");  

 

 



else 

 

 



 

System.out.println("Element  indeksi  -  "  + 

result);  

 

}  



}  

 

Download 458.87 Kb.

Do'stlaringiz bilan baham:




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