(Binary Search) ਵਿੱਚ ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ Java

ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ Java ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਇੱਕ ਕੁਸ਼ਲ ਢੰਗ ਹੈ, ਜੋ ਇੱਕ ਲੜੀਬੱਧ ਐਰੇ ਦੇ ਅੰਦਰ ਇੱਕ ਖਾਸ ਮੁੱਲ ਲੱਭਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਪਹੁੰਚ ਐਰੇ ਨੂੰ ਲਗਾਤਾਰ ਦੋ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਦੀ ਹੈ ਅਤੇ ਖੋਜ ਮੁੱਲ ਦੀ ਮਿਡਲ ਐਲੀਮੈਂਟ ਨਾਲ ਤੁਲਨਾ ਕਰਦੀ ਹੈ।

ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ

ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਐਰੇ ਦੇ ਮੱਧ ਤੱਤ ਨਾਲ ਖੋਜ ਮੁੱਲ ਦੀ ਤੁਲਨਾ ਕਰਕੇ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਜੇਕਰ ਖੋਜ ਮੁੱਲ ਮੱਧ ਤੱਤ ਦੇ ਬਰਾਬਰ ਹੈ, ਤਾਂ ਐਲਗੋਰਿਦਮ ਉਸ ਤੱਤ ਦੀ ਸਥਿਤੀ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਖੋਜ ਮੁੱਲ ਮੱਧ ਤੱਤ ਤੋਂ ਘੱਟ ਹੈ, ਤਾਂ ਐਲਗੋਰਿਦਮ ਐਰੇ ਦੇ ਖੱਬੇ ਅੱਧ ਵਿੱਚ ਖੋਜ ਜਾਰੀ ਰੱਖਦਾ ਹੈ। ਜੇਕਰ ਖੋਜ ਮੁੱਲ ਵੱਧ ਹੈ, ਤਾਂ ਐਲਗੋਰਿਦਮ ਐਰੇ ਦੇ ਸੱਜੇ ਅੱਧ ਵਿੱਚ ਖੋਜ ਜਾਰੀ ਰੱਖਦਾ ਹੈ। ਇਹ ਪ੍ਰਕਿਰਿਆ ਉਦੋਂ ਤੱਕ ਦੁਹਰਾਈ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਖੋਜ ਮੁੱਲ ਨਹੀਂ ਮਿਲਦਾ ਜਾਂ ਖੋਜ ਕਰਨ ਲਈ ਕੋਈ ਹੋਰ ਤੱਤ ਨਹੀਂ ਹੁੰਦੇ।

ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੇ ਫਾਇਦੇ ਅਤੇ ਨੁਕਸਾਨ

ਲਾਭ:

  • ਉੱਚ ਕੁਸ਼ਲਤਾ: ਇਹ ਐਲਗੋਰਿਦਮ ਵੱਡੇ ਐਰੇ ਦੀ ਖੋਜ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਂਦੇ ਹੋਏ, ਹਰੇਕ ਪੜਾਅ ਵਿੱਚ ਅੱਧੇ ਤੱਤਾਂ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ।
  • ਘੱਟ ਸਮੇਂ ਦੀ ਗੁੰਝਲਤਾ: ਇਸ ਐਲਗੋਰਿਦਮ ਦੀ ਸਮਾਂ ਗੁੰਝਲਤਾ O(log n) ਹੈ, ਇਸ ਨੂੰ ਵੱਡੇ ਡੇਟਾਸੇਟਾਂ ਲਈ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਬਣਾਉਂਦੀ ਹੈ।

ਨੁਕਸਾਨ:

  • ਕ੍ਰਮਬੱਧ ਐਰੇ ਦੀ ਲੋੜ: ਐਲਗੋਰਿਦਮ ਸਿਰਫ਼ ਕ੍ਰਮਬੱਧ ਐਰੇ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ।

ਉਦਾਹਰਨ ਅਤੇ ਵਿਆਖਿਆ

ਵਿੱਚ ਇੱਕ ਕ੍ਰਮਬੱਧ ਪੂਰਨ ਅੰਕ ਐਰੇ ਵਿੱਚ ਇੱਕ ਖਾਸ ਪੂਰਨ ਅੰਕ ਲੱਭਣ ਲਈ ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਇੱਕ ਉਦਾਹਰਣ 'ਤੇ ਵਿਚਾਰ ਕਰੋ 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");  
        }  
    }  
}  

ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ ਕ੍ਰਮਬੱਧ ਪੂਰਨ ਅੰਕ ਐਰੇ ਵਿੱਚ ਨੰਬਰ 9 ਨੂੰ ਲੱਭਣ ਲਈ ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਐਲਗੋਰਿਦਮ ਐਰੇ ਰਾਹੀਂ ਦੁਹਰਾਉਂਦਾ ਹੈ ਅਤੇ ਖੋਜ ਮੁੱਲ ਦੀ ਮਿਡਲ ਮੁੱਲ ਨਾਲ ਤੁਲਨਾ ਕਰਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਨੰਬਰ 9 ਐਰੇ ਵਿੱਚ ਸਥਿਤੀ 4(0-ਅਧਾਰਿਤ ਸੂਚਕਾਂਕ) 'ਤੇ ਪਾਇਆ ਜਾਂਦਾ ਹੈ।

ਹਾਲਾਂਕਿ ਇਹ ਉਦਾਹਰਨ ਇਹ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਕਿਵੇਂ ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਕ੍ਰਮਬੱਧ ਪੂਰਨ ਅੰਕ ਐਰੇ ਵਿੱਚ ਇੱਕ ਤੱਤ ਲੱਭ ਸਕਦਾ ਹੈ, ਇਹ Java ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਹੋਰ ਖੋਜ ਦ੍ਰਿਸ਼ਾਂ 'ਤੇ ਵੀ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।