Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 35000UZS
Размер 797.2KB
Покупки 0
Дата загрузки 29 Май 2025
Расширение docx
Раздел Курсовые работы
Предмет Информатика и ИТ

Продавец

Telzor Uchun

Дата регистрации 21 Апрель 2025

24 Продаж

Qidirish algoritmlari va ularning taxlili C#

Купить
O’ZBEKISTON RESPUBLIKASI OLIY TA’LIM,FAN     VA
INNOVATSIYALAR VAZIRLIGI
URGANCH DAVLAT UNIVERSITETI
               
              “FIZIKA-MATEMATIKA” FAKULTETI
            “MATEMATIK INJINIRING” KAFEDRASI
                         “Algoritmik tillar va dasturlash asoslari”
`
Mavzu: “Qidirish  algoritmlari  va  ularning   taxlili”
5130300 - “Matematik injiniring (Ishlab chiqarish sohalari bo’yicha)”
 Bajardi:1-kurs Boltaboyev Azimboy Quranboy o’gli 
Ilmiy rahbari: ____________________________ 
Topshirgan sanasi:_______________________________ 
Himoya qilgan sanasi:____________________________ 
Baho:__     
                 
                                         
                                          Urganch – 2023
                                                              1                                     
     MUNDARIJA
  KIRISH
 I BOB.
Dasturlashtilllari…………………………..………………………………………..
3 
1.1.   C#   dasturlash   tilining   afzalliklari   …………..……………………..
……….......6 
1.2.   Visual   Studio   2022   muhitida   ishlash   …………...............
……………………...8
1.3.Algoritmlar  va  ularning   to’liq  tuzilishining  bosqichlari  va  ishlab  chiqish
uslublari…………………………………………………………………………...10
II BOB. Dasturning asosiy qismi
2.1.Qidiruv algoritlari.chiziqli  binary qidiruv …………………… ……………..17
XULOSA………………………...……................................... …….…………….19
 Foydalanilgan  adabiyotlar………………….........................................................20
 Ilova……………………………………………............................………………21
               
                                                              2     KIRISH 
Dasrurlash tillari Inson kabi kompyuter ham o‘ziga xos tilda muloqot qiladi. Bu
til faqat kompyuter tushunadigan til bo‘lib, u cheklangan lug‘at va qat’iy yozish
qoidalaridan iboratdir.Kompyuter tushunadigan va muloqot olib boradigan “til”
dasturlash   tili   deb   ataladi.   Istalgan   dasturlash   tilini   bilgan   shaxs   o‘z   dasturini
bemalol   tuza   oladi.   Protsessor   dasturlash   tilida   yozilgan   dasturni   to‘g‘ridan   –
to‘g‘ri  tushunmaydi.   Buning  uchun  dasturni  protsessor  tiliga  tarjima   qiladigan
(raqamli   o‘tkazib   beruvchi)   tarjimon   tili   –translyatordan   foydalaniladi.
Tarjimon tilining ikkita turi mavjud: kompilyator va interpretator .
  Kompilyator   dasturlash   tilida   yozilgan   dastur   kodini   to‘laligicha   o‘qib   ,
mashina   kodiga   tarjima   qiladi   va   tarjima   natijalarini   bajariladigan   yaxlit   bitta
faylga   yig‘adi.   Interoretator   dasturlash   tilida   yozilgan   kodni   bosqichma   -
bosqich mashina kodiga aylantirib , tahlil qiladi va berilgan buyruqlarni ketma-
ketlikda   bajaradi.   Agar   xatolik   sodir   bo‘lsa,   o‘sha   zahoti   xabar   beradi.
Dasturlash  tillari   juda  ko‘p  bo‘lib,  ularning  har   biridan  o‘ziga xos  masalalarni
yechishda   foydalanish   mumkin.   Quyida   ularning   eng   mashhurlari   haqida
ma’lumotlar bilan tanishamiz. C kompyuter operatsion tizimlarini yozish uchun
mo‘ljallangan til.
  JAVASCRIPT   interfaol   web-   saytlarni   yozish   uchun   mo‘ljallangan   til.
SCRATCH   dasturlarni   o‘rganish   uchun   eng   qulay   vizuallashgan   dasturlash   tili.
JAVA   kompyuter,   mobil   telefon   va   planshetlar   uchun   mo‘lljallangan   dastur
yozuvchi   til.   PHP   dinamik   web-saytlar   yaratish   uchun   mo‘lljallangan   til.
PYTHON  turli masalalarni yechish, sun’iy intellekt tizimlari uchun mo‘lljallangan
dasturlash tili. 
  Aksariyat dasturlash tillari, xususan, C++ , C#, Pascal , Java, Python va boshqalar
integrallashgan   dasturlash   muhiti   (IDE)ga   ega.   IDE   (   Integrated   Development
Environment- integrallashgan dasturlash muhiti)- dasturiy ta’minot yaratish uchun
dasturiy vositalar majmui. Dasturlash tillari ishlash muhiti va qulayliklari bilan bir-
biridan farqlanadi. Bir xil                             
                                                              3 1) turdagi ishni bajaradigan dasturlarni Basic, Pascal, C va boshqa tillarda yozish
mumkin.   Pascal,   Fortran   va   Kobol   tillari   universal   tillar   hisoblanadi,   C   va
Assembler tillari mashina tiliga ancha yaqin tillar bo‘lib, quyi yoki o‘rta darajali
tillardir.   Algoritmik   til   inson   tillariga   qanchalik   yaqin   bo‘lsa,   u   tilga   yuqori
darajali   til   deyiladi.   Mashina   tili   esa   eng   pastki   darajali   tildir.   Mashina   tili   bu
sonlardan   iboratdir,   Masalan:   010110100010101.   Dasturlash   tillari   2   ta   katta
guruhlarga bo‘linadi, quyi va yuqori darajali dasturlash tili. 
2) Quyi darajali dasturlash tili ancha murakkab bo‘lib ular juda maxsus sohalarda
ishlatiladi   va   ularning   mutaxassislari   ham   juda   kam.   Chunki   quyi   dasturlash
tillari (masalan: assembler)  ko‘pincha miktoprotsessorlar  bilan ishlashda kerak
bo‘lishi mumkin. Odatda turli dasturlash ishlari uchun yuqori darajali dasturlash
tilidan keng foydalaniladi. 
3)           EHM   (Elektron   Hisoblash   Mashinasi)   endi   yuzaga   kelgan   paytda
programma   tuzishda,   faqat   mashina   tillarida,   ya’ni   sonlar   yordamida   EHM
bajarishi   kerak   bo’lgan   amallarning   kodlarida   kiritilgan.   Bu   holda   mashina
uchun   tushinarli   sanoq,   sistemasi   sifatida   2   lik,   6   lik,   8   lik   sanoq   sistemalari
bo‘lgan.   Programma   mazkur   sanoq   sistemasidagi   sonlar   vositasida   kiritilgan.
Yuqori   darajali   dasturlashda,   mashina   tillariga   qaraganda   mashinaga
moslashgan (yo‘naltirilgan) belgili kodlardagi tillar hisoblanadi. 
4)   Belgilar   kodlashtirilgan   tillarning   asosiy   tamoyillari   shundaki,   unda   mashina
kodlari   ularga   mos   belgilar   bilan   belgilanadi,   hamda   xotirani   avtomatik
taqsimlash va xatolarni tashhis qilish kiritilgan. Bunday mashina moslashgan til
-   ASSEMBLER   tili   nomini   oldi.   Odatda   dasturlash   yuqori   saviyali   dasturlash
tillari 
        (Delphi,   Java,   C++,   Python)   vositasida   amalga   oshiriladi.   Bu   dasturlash
tillarining semantikasi odam tiliga yaqinligi tufayli dastur tuzish jarayoni ancha
oson kechadi. 
    Biz   hozir   biladigan   va   ishlatadigan   tillarning   barchasi   insonga   ’’tushunarli”
tilda   yoziladi.   Ingliz   tilini   yaxshi   biluvchilar   programma   kodini   qiynalmasdan
                                                              4 tushunishlari   mumkin.   Bu   guruhga   Fortran,   Algol,   C,   Pascal,   Cobol   va   h.k.
tillar kiradi(ko‘pchiligi hozirda 
deyarli   qo‘llanilmaydi).   Eng   birinchi   paydo   bo`lgan   tillardan   to   hozirgi
zamonaviy 
  tillargacha   ishlatish   mumkin.   Lekin,   hozirgi   web   texnologiya   orqali   ishlaydigan
tillarda(PHP,   ASP.NET,   JSP)   bunday   dasturlar   tuzilmaydi.   Chunki   bunday
dasturlarning  ishlashi  uchun   yana  bir  amaliy   dastur   ishlab  turishi  kerak.  Hozirda,
amaliy   dasturlar,   asosan,       Visual   C++,   C#,   Borland   Delphi,   Borland   C++,   Java,
Phyhon   kabi   tillarda   tuziladi.   Quyidagi   jadvalda   dasturlash   tillarining   yaratilgan
yili va yaratuvchilari haqida ma’lumotlar keltirilgan.
5)
                                                              5   C# dasturlash tilining afzalliklari
C#   (C-Sharp)   -   .NET   Framework   platformasi   uchun   yaratilgan   obyektga
yo‘naltirilgan   dasturlash   tili   bo‘lib,   2000   yilda   A.   Haylsberg   va   P.   Goldelar
tomonidan yaratilgan. 
  C# yaratilishida “har bir mavjud narsa – obekt hisoblanadi” postulatasiga asos
qilingan.   Bu   dasturlash   tilini   yaratishda   A.   Haylsberg   va   P.Goldelar   C++
tilidagi   kabi   imkoniyatlarni   va   Java   dasturlash   tilidagi   oddiylik   va   ko‘rinishni
birlashtirib   yangi   dasturlash   tili   yaratishni   maqsad   qilganlar   va   natijada   C#
dasturlash   tili   yaratilgan.   Bu   dasturlash   tili   o‘zgarmas   turg‘un   komponentli
arxitekturaga va yuqori saviyadagi xavfsizlik kodiga ega. C# dasturlash tilining
C++   va   Java   dasturlash   tillari   bilan   xarakterli   o‘xshashlik   tomonlarini   quyida
sanab o‘tamiz:
 Java dasturlash tili bilan 
o obyektga yo‘naltirilganlik (vorislilik) 
o interfeysi - xatoliklarni bartaraf qilish
o ko‘p oqimlilik (funksiyalilik)
o nomlar - turlar turg‘unligi
o ko‘p masalalik
o havfsizlik   kodiga   tegishli   suzuvchi   nuqtaning   arifmetik   amallari
dastur   kodini   dinamik   tiklash   С ++   dasturlash   tili   bilan   o‘xshash
tomonlari:
o ko‘p operatorlilik
o havfsizlik   kodiga   tegishli   suzuvchi   nuqtaning   arifmetik   amallari
dastur kodini dinamik tiklash
o soddalilik 
o ko‘p komponentalilik 
o tushunarli interfeysi
                                                              6 C  # dasturlash tili yordamida tarmoq yoki Internet dasturlaridan tashqari Windows
plotformasida   ishlovchi   ixtiyoriy   dasturni   yaratish   mumkin.   C#   va   .NET
platformasi   orqali   Windows   muhitida   dasturlar   yaratish   metodikasini
mukammallashtirish   ko‘zda   tutilgan.   .NET   Framework   deb   platforma   mustaqil
izohlarni   rivojlantirish   va   bajarishni   qo‘llab-quvvatlovchi   muhitga   aytiladi.U
dasturlashning   turli   tillarida   birgalikda   ishlash   imkonini   beradi.   Shuningdek,
Windows   uchun   umumiy   dasturlash   modellari   va   dasturlar   o‘tkazuvchanligini
taminlaydi. C# dasturlash tili obektga yo‘naltirilgan dasturlash (OYD) prinsplariga
asoslanadi   va   barcha   qo‘shimcha       dasturlar   qaysidir   darajada   obektga
yo‘naltirilgan bo‘lib xisoblanadi. Xulosa qilib aytganda, C# dasturlash tili o‘zining
obyektga   yo‘naltirilganlik   prinsipi   bilan   boshqa   dasturlash   tillaridan   farq   qiladi,
turli   xil   dasturlarni   C#   dasturlash   tilida   yaratilganida   bir   qancha   qulayliklar
namoyon bo‘ladi
1.1         Visual Studio 2022 muhitida ishlash
Microsoft Visual Studio integratsiyalashgan dasturiy ta’minot ishlab chiqish muhiti
va   bir   qator   boshqa   vositalarni   o‘z   ichiga   olgan   Microsoft   mahsulotlari   qatoridir.
Ushbu   mahsulotlar   sizga   konsol   ilovalari   va   grafik   interfeysga   ega   o‘yinlar   va
ilovalarni,   shu   jumladan   Windows   Forms   texnologiyasini,   UWPni   qo‘llab-
quvvatlaydigan   dasturlarni,   hamda   veb-saytlarni,   veb-ilovalarni,   vebxizmatlarni
mahalliy va boshqariladigan kodlarda ishlab chiqish imkonini beradi. 
    Microsoft   tomonidan   Xamarin   sotib   olingandan   so‘ng,   IOS   va   Android
dasturlarini   ishlab   chiqish   imkoniyati   paydo   bo‘ldi.   Visual   Studio   IntelliSense
texnologiyasini   qo‘llab   quvvatlaydigan   va   kodni   osongina   qayta   ishlash
qobiliyatiga ega manba kodi muharririni o‘z ichiga oladi.
    O‘rnatilgan tuzatuvchi manba darajasidagi tuzatuvchi yoki mashina darajasidagi
tuzatuvchi sifatida ishlashi mumkin.
 Bugungi kunda Visual Studio quyidagi versiyalarga ega:
 1. Visual Studio 97
                                                              7  2. Visual Studio 6.0 (1998)
 3. Visual Studio .NET (2002)
 4. Visual Studio .NET 2003
 5. Visual Studio 2005 
 6. Visual Studio 2008 
 7. Visual Studio 2010 
 8. Visual Studio 2012 
 9. Visual Studio 2013 
 10. Visual Studio 2015
 11. Visual Studio 2017
 12. Visual Studio 2019
 13. Visual Studio 2022
- Visual Studio quyidagilardan birini yoki bir nechtasini o‘z ichiga oladi:
- Visual Basic 
- .NET va undan oldin Visual Basic
- Visual C++     
- Visual C# (Visual Studio .NET dan beri kiritilgan)
- Visual F# (Visual Studio 2010 dan beri kiritilg
JavaScript   Python   (Visual   Studio   2019   dan   beri   kiritilgan)   XAML   Visual   Studio
Version 4.0 dan oldin Visual Basic 3, Visual C++, Visual FoxPro va Source Safe
mustaqil paketlar sifatida yuborilgan .
  Bugungi   kunda   Visual   Studio   ning   oxirgi   Visual   Studio   2022   eng   ommabop
bo‘lib, u ko‘plab qulayliklarga ega.
Jumladan,   oldingi   versiyalarga   nisbatan   bir   qancha   tez   terish   funksiyalari
qo‘shilgan   va  foydalanuvchilar   uchun  ham   bir  qancha   qulayliklar  yaratilgan.  Shu
bilan birga shuni qo‘shimcha qilish kerakki, 
    Visual   Studio   2022   oldingi   versiyalardan   o‘zining   dastur   yozilayotgan   paytda
beradigan takliflari ko‘pligi va muqobilligi bilan ajralib turadi.
                                                              8  Quyida Visual Studio 2022 muhitida yangi dastur hosil qilish va uning bir qancha
funksiyalarini   ko‘rib   chiqamiz:   Visual   Studio   2022   ilovasiga   kirilgandan   keyin
yangi loyiha yaratish tugmasi bosiladi.
                                                  
So‘ngra yaratiladigan dasturga rejimi tanlanadi:
                                                              9 Misol   uchun   Console   (.NET   Framework)   rejimini   tanlaymiz.Keyin   dasturga   nom
berish   oynasi   chiqadi.Bunda   dasturga   nom   berishimiz   va   kompyuter   xotirasining
qaysi jildida saqlanishini ham ko‘rsatishimiz mumkin.
 
                                                            
                                                              10  Shundan   keyin   dastur   oynasi   ochiladi   va   biz   dasturimizga   kodlarni   yozishimiz
mumkin bo‘ladi.
1.3.Algoritmlar  va  ularning   to’liq  tuzilishining  bosqichlari  va  ishlab  chiqish
uslublari.
Algoritmlarning   turli   tariflari   mavjud.   Rasmiy   tariflaridan   biri   bo’yicha   algoritm
bu qo’yilgan masalani  bir xil yechishiga olib keluvchi aniq harakatlarning ketma-
ketligi. Bu tushunchadan algoritmning quyidagi xossalari kelib chiqadi:
        1.Diskretlilik-aniqlanayotgan jarayonni qadamba-qadam ko’rinishi; 
        2.Ommaviylik-algoritm o’xshash masalalar turkumini yechishi kerak;
                3.Tushunarlilik-algoritmda   beriladigan   ko’rsatmalar   foydalanuvchiga
tushunarli                          
        bo’lib,  uning talablariga javob berishi kerak;
                4.Aniqlilik-algoritmda   malum   tartibda   amallarni   bajarish   nazarda   tutilishi
kerak 
        va bajaruvchiga joriy qadam tugatilishi bilan qaysi qadam keyinki bo’lib 
        bajarilishi aniq ko’rsatilishi kerak.
                                                              11 Algoritmlar   rasmiy   ravishda   bajariladi,   bu   degani   bajaruvchi   bajarilayotgan
amallarni   mazmunini   anglash   shart   emas.   Algoritm   tuzish   jarayoninga
algoritmlashtirish deyiladi. 
          Algoritm   tuzish   jarayonida   nazariy   va   amaliy   nuqtai   nazardan
algoritmlar,dasturlash va EHMlarni qo’lllash bilan bog’liq bo’lgan bilimlar kerak.
Asosiy maqsad bu masalani qo’yish, masalani yechish algoritmni tuzish, algoritmi
mashina dasturi ko’rinishida amalga oshirish algoritmni samaradorligini ko’rsatish,
muammolarini   o’rganish.   Bu   jarayonlar   algoritmni   to’liq   yaratish   tushunchasiga
olib keladi va quyidagi bosqichlarni belgilaydi:
         1.Masalani qo’yilishi.
         2.Modelini yaratish.
         3.Algoritmni ishlab chiqish.
         4. Algoritmni to’g’riligi tekshirish.
         5.Algoritmni amalga oshirish.
         6.Algoritmni va ularni murakkabligini tahlil qilish.
         7. Dasturni  tekshirish.
         8.Hujjatlashtirish.               
                                  
                                                              12    Masala  qo’yilishi
Masalani   yechishdan   oldin,   uni     berilishini     aniq     shakllantirib     olish   zarur.     Bu
jarayon     to’g’ri     savollarni     aniqlash     bo’lib,   savollar     quyidagicha     bo’lishi
mumkin:
1.1       Dastlabgi   berilgan  masala  shartlarida  hamma iboralar tushinarlimi?
1.2       Nima berilgan?
1.3       Nimani  toppish  kerak?
1.4       Yechimni  qanday  ta’riflash  kerak?
1.5        Qaysi  berilganlar  yetarli  emas  va  hammasi  kerakmi?
1.6         Qanaqa  mumkinliklar qabul  qilingan?
Albatta,  bulardan tashqari  boshqa  savollarni  ham  islatish  mumkin, yoki  ayrim
savollarni bir  necha  bor takror  ishlatish  mumkin.
                                              Modelni  yaratish
Akademik   A. N.   Tixonov   fikri   bo’yicha matematik   modellashtirish     dunyoni
bilish  va o’rganishda  kuchli quraollardan buridir.
Uning  ta’rifi  bo’chicha  matematik  model tashqi  dunyoning xodisalar turkimini
matematik   belgilar  yordamida  taxminiy  tavsifi.
      Xodisani   tavsiflash       uchun     uning     muhim     xususiyatlarini   ,
qanuniyliklarini   ,ichki     aloqalarini   ,     ayrim   xossalarning     ahamiyatini     aniqlash
zarur
Eng     muhim   foktorlari     aniqlanganda   ,   ahamiyatlari     kamroq     bo’lganlarini
hisobdan  chiqarish  mumkin. Umuman ,  modelni  tanlash  fandan  ko’ra. Ko’proq
sanat   ishi     deb     hisoblanadi   ,   yaxshi   tuzilgan       modellarni     o’rganish     esa   –
modellashtirishda     tajriba     ortdirishning   eng     yaxshi     usuli.     Modelni     yaratishda
quyidagi  savollarni  aniqlash  maqsadga  muvofiq:
         2.1      Masalani  yechish  uchun   qaysi  matematik struktura  ko’proq  mos       
                     Keladi
         2.2       O’xshash  masalani  yechimi  bormi?
                                                              13                  2.3               Masalaning   barcha   muhim   ma’lumotlari     matematik   ob’yektlar
orqali   tavsiflanadimi?
          2.4      Izlanayotgan  natija   biron bir   matematik  o’lchamga  mos keladimi?
          2.5       Modelning   ob’yektlari   orasidagi  bog’lanishlar  aniqlanganmi?
           2.6       Tuzilgan   model  bilan  ishlash  qulaymi?
                                                     
Algoritmlarni   Yaratish ijobiy  ish,  shuning  uchun  ixtiyoriy   zarur  algoritmlarni
tuzish     imkonini       beradigan     bir   umumiy       bir     usul   mavjud     emas.   Lekin
algoritmlarni     ishlab   chiqishni         asoslangan     oddiy     sxemalarini     beradigan
ko’pgina     algoritmlashtirish     nazariyalari     bor.     Bunday     sxemalar       va     yangi
algoritmlarni
 paydo  qilishning  o’rtasida  qattai  bog’liqlik  kuzatiladi. Tez uchraydigan va ko’p
foydalaniladigan usullarni quyidagicha ajratib olish mumkin.
1.Algoritmlarni konstruksiyalash. Bu usulda yangi algoritm mavjud algoritmlardan
tarkibiy qismlar sifatida foydalanib, bir biriga moslab bir butunlik hosil qilish yo’li
bilan ishlab chiqiladi.
2.Algoritmlarni   ekvivalent   qayta   ishlash.   Ikki   algoritm   ekvivalent   hisoblanishi
uchun quyidagi shartlar bajarilishi kerak:
                                        -Bittasi   uchun   mumkin   bo’lgan   dastlabki   berilganlar   variant,
ikkinchisi
                    -uchun ham mumkin bo’lishi kerak.
                    -Bir algoritmni qandaydir dastlabki ma’lumotga qo’llanilishi, ikkinchi
algo
                     ritmni    ham shu   berilganga  qo’llanilishiga  kafolat  beradi.
          -Bir  xil  dastlabgi  berilgan malumotlar  uchun    ikkala  algoritm  ham bir
           xil  natija  berishi .Lekin   bu  algoritmi  ikki  hil  shakllarni  ekvivalent deb
            nomlash   noto’g’ridir.
Shunday     qilib     ,     algoritmni       ekvivalent     qayta     ishlash     deb   ,     dastlabgi
algoritmga   ekvivalent   algoritmni  paydo  qiladigan   o’zgartirishlarga  aytiladi.
                                                              14 Misol   tariqasida   ,   algoritmni     bir     tildan     boshqa     tilga       o’tkazishni     keltirish
mumkin.Shu     bilan birgalikda   algoritmni   ekvivalent   qayta   ishlash   usuli bilan
keskin     o’zgartirish   mumkin   ,     lekin     bu     holda       asosiy     e’tiborni   dastlabki
algoritmga  nisbatan  yahshi  algoritmni   yaratishga  berish  kerak.
3.Toraytiruvchi     o’zgartirishlar.   Bunday       o’zgartirishlar     natijasida     dastlabgi
algoritmlar     yechish     kerak     bo’lgan     masalalarning         xususiy       xolati   yechimi
algoritmlari       ishlab   chiqiladi. Odatda ,     bu   usulda     ekvivalent   qayta   ishlash
jarayonida   algoritmni  ixchamlashtirish  maqsadida  foydalaniladi.
4.Formal  usulni  matematikaga   bog’liq  bo’lmagan  muommaga  qo’llash .
Bu   yerda     matematik     muomma     matematik     ko’rinishga     o’tkazilib,   uning
algoritmini     ishlab     chiqishga   uriniladi.Agar     o’xshash     matematik     masala
yechimining   algoritmi  ma’lum    bo’lsa  undan   foydalanil
                         Dasturning  asosiy  algoritmi
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
                                                              15 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.   2.2.
Ketma-ket   qidiruv   algoritmi   Mazkur   ko’rinishdagi   qidiruv   agar   ma’lumotlar
tartibsiz   yoki   ular   tuzilishi   noaniq   bo’lganda   qo’llaniladi.   Bunda   ma’lumotlar
butun   jadval   bo’yicha   operativ   xotirada   kichik   adresdan   boshlab,   to   katta
adresgacha   ketma-ket   qarab   chiqiladi.   Massivda   ketma-ket   qidiruv   (search
o’zgaruvchi   topilgan   element   tartib   raqamini   saqlaydi).   Ketma-ket   qidiruv
algoritmi   C++   tilida   quyidagicha   bo’ladi:   int   qidiruv(int   key){   for   (int   i=0;ik   ==
key){   search   =   p;   return   search;   }   q   =   p;   p   =   p->nxt;   }   Node   *s=new   Node;;   s-
>k=key; s->r=rec;  s->nxt= NULL;  if  (q == NULL){ s->nxt=lst; lst  = s;  } else q-
>nxt = s; search= s; return search; Ro’yhatli tuzilmaning afzalligi shundan iboratki,
ro’yhatga   elementni   qo’shish   yoki   o’chirish   tez   amalga   oshadi,   bunda   qo’shish
yoki o’chirish element soniga bog’liq bo’lmaydi, massivda esa elementni qo’shish
yoki o’chirish o’rta hisobda barcha elementlarning yarmini siljitishni talab qiladi. 
      Ro’yhatda qidiruvning samaradorligi taxminan massivniki bilan bir xil bo’ladi.
Teng   bo’lish   orqali   qidiruv   (ikkilik   qidiruv)   algoritmi   Faraz   qilaylik,   o’sish
tartibida tartiblangan sonlar massivi berilgan bo’lsin
    .   Ushbu   usulning   asosiy   g’oyasi   shundan   iboratki,   tasodifiy   qandaydir   AM
element olinadi va u X qidiruv argumenti bilan taqqoslanadi. 
  Agar   AM=X   bo’lsa,   u   holda   qidiruv   yakunlanadi;   agar   AM   X   bo’lsa,   u   holda
indekslari   M   dan   katta   bo’lgan   barcha   elementlar   kelgusi   qidiruvdan   chiqarib
yuboriladi.   M   ixtiyoriy   tanlanganda   ham   taklif   qilinayotgan   algoritm   korrekt
ishlaydi. Shu sababali M ni shunday tanlash lozimki, tadqiq qilinayotgan algoritm
samaraliroq   natija   bersin,   ya’ni   uni   shunday   tanlaylikki,   iloji   boricha   kelgusi
jarayonlarda ishtirok etuvchi elementlar soni kam bo’lsin.
     Agar biz o’rtacha elementni, ya’ni massiv o’rtasini tanlasak yechim mukammal
bo’ladi.   Misol   uchun   butun   sonlardan   iborat,   o’sish   bo’yicha   tartiblangan
                                                              16 massivdan   ikkilik   qidiruv   usuli   yordamida   key   kalitga   mos   elementni   izlash
dasturini ko’rib chiqamiz. 
   Dastur kodi: #include using namespace std; int main(){ int n;cout<<"n=";cin>>n;
int   k[n];   for(int   i=0;i>k[i];   int   key,   search;   cout<<"qidirilayotgan   elementni
kiriting=";cin>>key; int low = 0; int hi = n-1; int j=0; while (low <= hi){ int mid =
(low   +   hi)   /   2;j++;   if   (key   ==   k[mid]){   search   =   mid;   cout<<"qidirilayotgan
element "<<search+1<<" o’rinda turibdi va u "<<j<<" ta solishtirishda toplidi\n";
system("pause");  exit(0); } if (key < k[mid]) hi = mid - 1; else low = mid + 1; }
search=-1;   cout<<j<<"   ta   solishtirish   amalga   oshirildi   va   qidirilayotgan   element
topilmadi\n";   system("pause");   }   Dastur   natijasi   n=6   1   2   3   4   5   6   qidirilayotgan
elementni kiriting=6 qidirilayotgan element 6 o'rinda turibdi va u 3 ta solishtirishda
toplidi
Qidiruv jadvalini qayta tartibga keltirish Umuman olganda, jadvalda har bir
elementni   qidirish   ehtimolligini   qandaydir   bir   qiymat   bilan   izohlash   mumkin.
Faraz   qilaylik   jadvalda   qidirilayotgan   element   mavjud.   U   holda   qidiruv   amalga
oshirilayotgan   jadvalni   diskret   holatga   ega   tizim   sifatida   qarash   mumkin   hamda
unda qidirilayotgan elementni topish ehtimolligi – bu tizim i-chi holati ehtimolligi
p(i)   deb   olish   mumkin.   Jadvalni   diskret   tizim   sifatida   qaraganimizda,   undagi
taqqoslashlar   soni   diskret   tasodifiy   miqdorlar   qiymatlarini   matematik   kutilmasini
ifodalaydi. 
   Ma’lumotlar jadvalda quyidagi ko’rinishda tartiblangan bo’lishi lozim: Bu
shart   taqqoslashlar   sonini   kamaytirib,   samaradorlikni   oshiradi.   Sababi,   ketma-ket
qidiruv   birinchi   elementdan   boshlanganligi   uchun   eng   ko’p   murojaat   qilinadigan
elementni birinchiga qo’yish lozim. 
  Qidiruv jadvalini qayta tartibga keltirishning eng ko’p ishlatiladigan ikkita
usuli mavjud. Ularni bir bog’lamli ro’yhatlar misolida ko’rib chiqamiz. 1. Topilgan
elementni ro’yhat boshiga qo’yish orqali qayta tartibga keltirish. 2. Transpozitsiya
usuli.   5.5.   Topilgan   elementni   ro’yhat   boshiga   qo’yish   orqali   qayta   tartibga
keltirish 2.2-rasm. Ro’yxatni qayta tartibga keltirish 
                                                              17     Topilgan   element   2.2-rasmdagidek   birdaniga   ro’yhat   boshiga
joylashtiriladi.   Tuzilmadan   har   safar   birorta   element   izlab   topilsa   va   u   ro’yhat
boshiga olib borib qo’yilaversa, natijada oxirgi izlangan elementlar ro’yhat boshiga
joylashib   qoladi   va   biz   oxirgi   vaqtlarda   izlangan   elementlarni   tez   izlab   topish
imkoniga   ega   bo’lamiz.   Boshida   q   ko’rsatkich   bo’sh,   p   esa   ro’yhat   boshini
ko’rsatadi;   p   ikkinchi   elementni   ko’rsatganda,   q   birinchini   ko’rsatadi.   Ro’yhat
boshi   ko’rsatkichi   (table)   birinchi   elementni   ko’rsatadi.   Ro’yhatda   key   kalitli
element   topilsa,   u   p   ko’rsatkich   bilan,   undan   oldingi   element   esa   q   ko’rsatkich
bilan belgilanadi. 
  Shu topilgan p elementni ro’yhat boshiga joylashtiriladi. Dastur  kodi node
*q=NULL; node *p=table; while (p !=NULL){ if (key == p->k){ if (q == NULL)
{ //o‘rinlashtirish shart emas search = p; exit(0); } q->nxt = p->nxt; p->nxt = table;
table   =   p;   exit(0);   }   q   =   p;   p   =   p->nxt;   }   search   =   NULL;   exit(0);   5.6.
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   (2.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   2.3-rasm.   Transpozitsiya   usuli   bilan   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
                                                              18 ==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);   Ishni   bajarishga   oid   namuna   Talabalar
ma’lumotlaridan   –   FIO   va   adresdan   iborat   jadval   berilgan.   Binar   qidiruvdan
foydalanib   TTJ   da   yashaydigan   talabalar   ro’yhatini   hosil   qiling.   Algoritm   1.
Jadvalga n ta talaba FIO va adreslarini kiritamiz. 2
.   Binar   qidiruvni   jadvalning   birorta   maydonida   amalga   oshirish   uchun
jadvalni   shu   maydoni   bo’yicha   tartiblab   olish   kerak.   Shuning   uchun   masalaning
qo’yilishida   adresi   TTJ   bo’lgan   talabalarni   topish   kerakligi   sababli   jadval
ma’lumotlarini adres maydoni bo’yicha saralab olamiz. saralashdan foydalanilgan.
3. key kalitga mos elementni izlash chegaralarini aniqlab olamiz. 
                  
                                                              19         XULOSA
Berilgan     dasturni      yaratish       jarayonida   men   qidirish   algoritmlari    va
ularning   taxlili        binary    qidirish     ustida      ishlashni,  C#   dasturlash    tilida  class
yaratish   BinaryArray(int  size)  ikkilik  qidirishni  o’ragandm.
10       dan       100   gacha     bo’lgan     sonlar     ichidan       bir       son     kiritsa     shuni
qidiradigan     dasturni     tuzishni     o’rgandm   .   Bunda     algoritmi       yarmi     55     dan
pastdami   yoki  tepadami  qidiradi  agar  tepada  bo’lsa   shu  tartibda davom  etib
binary  qidirishni  o’rganib  oldim.
                                                              20 FOYDANANILGAN  ADABIYOTLAR 
 1.U. Yaxshiyev// informatika  qisqacha  malumotnoma “ Toshkent  2019          
    yil
2.I.   Boltayeva   ,     Y   Xudayberganov,   N.   Vaisova     “C#   dasturlash       tiliga
kirish”   Urganch 2015-yil
3. Texnoman.uz    sayti.
4.   http://uz  Wikipedia.org/wiki/Dasturlash   sayti
5.   https://www.tutorialspoint.com    sayti
                
                                                              21         Ilova 
using System;
using System.Collections.Generic;
   using System.Linq;
   
    using System.Text;
        namespace BinarySearch
{
    class BinaryArray
    {
        private int[] data;
       
     private static Random generator = new Random();
                public BinaryArray(int size)
        {
                    data = new int[size];
            for (int i = 0; i < size; i++)
            {
                     data[i] = generator.Next(10, 100);
            }
            Array.Sort(data);
        }
             public int BinarySearch(int searchElement)
        {
            int low = 0;
                    int high = data.Length - 1;
                  int middle = (low + high + 1) / 2;
                                                              22             int location = -1;
                  do // Search for element
            {
                Console.Write(RemainingElements(low, high));
                for (int i = 0; i < middle; i++)
                    Console.Write("   ");
                      Console.WriteLine(" * ");
                if (searchElement == data[middle])
                    location = middle;
                else if (searchElement < data[middle])
                    high = middle - 1;
                else
                    low = middle + 1;
                middle = (low + high + 1) / 2; // recalculate the middle  
            } while ((low <= high) && (location == -1));
            return location; // return location of search key
        }
                      public string RemainingElements(int low, int high)
        {
            string temporary = string.Empty;
            for (int i = 0; i < low; i++)
                temporary += "    ";
            // output elements left in array 
            for (int i = low; i <= high; i++)
                temporary += data[i] + " ";
            temporary += "\n";
            return temporary;
        }
                                                              23               public override string ToString()
            {  
            return RemainingElements(0, data.Length - 1);
        }
    }
}
                                                              24

Qidirish  algoritmlari  va  ularning   taxlili C#

Купить
  • Похожие документы

  • Agros test
  • Strategik boshqaruvda kompyuter modellashtirish
  • O’zbekiston yosh rassomlari asarlarini sotishga qaratilgan platformani yaratish loyihasi
  • Android tizimli telefonlar uchun skaner ilovasini yaratish
  • Web 2.0 servislar orqali oʻquv jarayonini tashkil etish

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha