Robototexnikada sun’iy intellekt texnologiyalari va vositalari


Chiziqli qidiruv algoritmi


Download 0.75 Mb.
bet2/3
Sana21.11.2023
Hajmi0.75 Mb.
#1792209
1   2   3
Bog'liq
Lutfullayev Ibrohim

Chiziqli qidiruv algoritmi
Chiziqli ya'ni ketma-ket qidiruv algoritimi ma'lumotlar boshidan boshlab oxirigacha tekshiriladi va bizga kerakli argument topilishi bilan qaytariladi. Ketma-ket qidiruv algoritimi ustunlik tarafi ma'lumotlarni saralash talab qilinmasligida va soddaligida. Kamchilik tarafi vaqt va xotiradan kamchlik kelib chiqishadir. Bu algoritimni C dasturlash tilidagi yechimini ko’rib chiqamiz:
Vaqt tezligi: O(N)
C Chiziqli qidiruv algoritimi:
#include

int linearSearch(int arr[], int size, int x) {


for (int i = 0; i < size; i++) {
if (arr[i] == x)
return i;
}
return -1;
}

int main() {


int arr[] = {10, 50, 30, 70, 80, 60, 20, 90, 40};
int size = sizeof(arr) / sizeof(arr[0]);
int result = linearSearch(arr, size, 20);
printf("%d\n", result);
return 0;
}


Binary (ikkilik) qidiruv algoritmi
Binary ya'ni ikkilik qidiruv algoritimi ma'lumotlarni bazani ikkiga bolib qidiradi yani xar bir oraliqni yarimidan boshlab katta kichiklikka qarab oraliqni ozgaritradi. Bu degani sizning bazangiz saralangan bo’lishi talab qilinadi. Ikkilik qidiruv algoritimi ustunlik tarafi tez ishlashi. Kamchilik tarafi bizga sortlangan ma'lumotlar berilishi yoki uni ozimiz saralab oshimiz talab etilashidadir. Bu algoritimni C dasturlash tilidagi yechimini ko’rib chiqamiz:
Vaqt tezligi: O (log2(n))
C Binar qidiruv algoritimi:
#include
#include

int binarySearch(int arr[], int size, int x) {


int left = 0;
int right = size - 1;
int mid;
while (left <= right) {
mid = left + (right - left) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}

int main() {


int arr[] = {10, 50, 30, 70, 80, 60, 20, 90, 40};
int size = sizeof(arr) / sizeof(arr[0]);
for(int i = 0; i < size - 1; i++)
for(int j = i + 1; j < size; j++)
if(arr[i] > arr[j]){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
for(int i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
int result = binarySearch(arr, size, 20);
printf("20 soni massivning %d o'rnida topildi", result);

return 0;


}




Download 0.75 Mb.

Do'stlaringiz bilan baham:
1   2   3




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