Binary Search (Binary Search) Algorithm in Java

Algorithm ya Utafutaji wa Binary ni njia bora katika Java upangaji, inayotumiwa kupata thamani maalum ndani ya safu iliyopangwa. Njia hii inaendelea kugawanya safu katika sehemu mbili na kulinganisha thamani ya utafutaji na kipengele cha kati.

Jinsi Algorithm ya Utafutaji wa binary inavyofanya kazi

Algorithm ya Utafutaji wa Binary huanza kwa kulinganisha thamani ya utafutaji na kipengele cha kati cha safu. Ikiwa thamani ya utafutaji ni sawa na kipengele cha kati, algorithm inarudi nafasi ya kipengele hicho. Ikiwa thamani ya utafutaji ni chini ya kipengele cha kati, algorithm inaendelea utafutaji katika nusu ya kushoto ya safu. Ikiwa thamani ya utafutaji ni kubwa zaidi, algorithm inaendelea utafutaji katika nusu ya haki ya safu. Mchakato huu unajirudia hadi thamani ya utafutaji ipatikane au hakuna vipengele zaidi vya kutafuta.

Faida na Hasara za Algorithm ya Utafutaji wa Binary

Manufaa:

  • Ufanisi wa Juu: Algoriti hii huondoa nusu ya vipengele katika kila hatua, ikiboresha utafutaji wa safu kubwa.
  • Utata wa Muda wa Chini: Utata wa wakati wa algoriti hii ni O(logi n), na kuifanya kuwa bora kwa seti kubwa za data.

Hasara:

  • Mahitaji ya Mkusanyiko Uliopangwa: Kanuni hufanya kazi tu na safu zilizopangwa.

Mfano na Ufafanuzi

Fikiria mfano wa kutumia Algorithm ya Utafutaji Nambari ili kupata nambari kamili katika safu kamili iliyopangwa katika Java.

public class BinarySearchExample {  
    public static int binarySearch(int[] array, int target) {  
        int left = 0;  
        int right = array.length- 1;  
  
        while(left <= right) {  
            int mid = left +(right- left) / 2;  
  
            if(array[mid] == target) {  
                return mid; // Return position if found  
            } else if(array[mid] < target) {  
                left = mid + 1;  
            } else {  
                right = mid- 1;  
            }  
        }  
        return -1; // Return -1 if not found  
    }  
  
    public static void main(String[] args) {  
        int[] numbers = { 1, 3, 5, 7, 9, 11, 13, 15 };  
        int target = 9;  
  
        int position = binarySearch(numbers, target);  
  
        if(position != -1) {  
            System.out.println("Element " + target + " found at position " + position);  
        } else {  
            System.out.println("Element " + target + " not found in the array");  
        }  
    }  
}  

Katika mfano huu, tunatumia Algorithm ya Utafutaji Nambari kupata nambari ya 9 katika safu kamili iliyopangwa. Algorithm inarudia kupitia safu na kulinganisha thamani ya utafutaji na thamani ya kati. Katika kesi hii, nambari ya 9 inapatikana kwenye nafasi ya 4(index-based index) katika safu.

Ingawa mfano huu unaonyesha jinsi Algorithm ya Utafutaji Nambari inaweza kupata kipengele katika safu kamili iliyopangwa, inaweza pia kutumika kwa hali zingine za utafutaji katika Java upangaji programu.