Robototexnikada sun’iy intellekt texnologiyalari va vositalari
Chiziqli qidiruv algoritmi
Download 0.75 Mb.
|
Lutfullayev Ibrohim
- Bu sahifa navigatsiya:
- Binary (ikkilik) qidiruv algoritmi
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling