2. Asimptotik analiz. Algoritmlarni analiz qilish

O'tgan postda biz asimptotik analiz nima ekanligi bilan tanshgan edik, Ushbu postda biz chiziqli qididiruv algoritmini asimptotik analiz qilamiz.

Algoritmni analiz qilishda 3 xil holat bo'lishi mumkin:

1) Eng yomon holat

2) O'rtacha holat

3) Eng zo'r holat

Quyida chiziqli qidiruv algoritimining realizatsiyasi keltirilgan:

#include <stdio.h> 
int search(int arr[], int n, int x) 
{ 
    int i; 
    for (i=0; i<n; i++) 
    { 
        if (arr[i] == x) 
        return i; 
    } 
    return -1; 
} 
int main() 
{ 
    int arr[] = {1, 10, 30, 15}; 
    int x = 30; 
    int n = sizeof(arr)/sizeof(arr[0]); 
    printf("%d soni %d inchi indexda topildi", x, search(arr, n, x)); 
    getchar(); 
    return 0; 
}

Eng yomon holat
Eng yomon holatda biz algoritmni eng ko'p vaqt oladigan holatini qaraymiz. Bu holat — eng baland chegara (Upper bound) deb ham ataladi. Chiziqli qidiruv algoritmida eng yomon holat — qidirilayotgan x son arr massivda mavjud bo'lmasligi. Chunki, agar arr massivda qidirilayotgan element mavjud bo'lmasa, search() funksiyasi massivni barcha elementlarini bilan bitta-bitta qarab chiqadi. Ushbu turdagi analiz eng keng foydalaniladi.

O'rtacha holat
O'rtacha holatda algoritmni ishlash vaqtini topish uchun, barcha sonlarni topish uchun ketgan vaqtlarni (har bir sonni alohida-alohida topishga ketgan vaqtlar) o'rta arifmetigi olinadi. Odatda amaliyotda, bu analiz juda ham ko'p ishlatilmaydi, chunki bu holtda biz programma qabul qilishi mumkin bo'lgan barcha qiymatlarni bilishimiz kerak bo'ladi.

Eng zo'r holat

Eng zo'r holat bu algoritmni bajarilishi uchun ketgan eng kam vaqtli holatdir. Chiziqli qidiruv algoritimida, agar qidirilayotgan son massivda birinchi bo'lib turgan bo'lsa sodir bo'ladi. Bu turdagi analiz amaliyotda deyarli umuman ishlatilmaydi, chunki eng zo'r holat faqat shartli sonlardagina bajarilishi mumkin.

Esda tuting: Algoritmlarni asimptotik analiz qilishda odatda eng yomon holat analizidan foydalaniladi. Ya'ni algoritmning ishlash vaqti uning eng yomon holati bilan baholanadi.

Davomi bor…

Manba:


JONNY

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript.


Qiziq bo‘ladi:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!