Algartam Cuardaigh Dénártha (Binary Search) i Java

Is modh éifeachtach Java ríomhchláraithe é an Algartam Cuardach Dénártha, a úsáidtear chun luach sonrach a fháil laistigh d’eagar sórtáilte. Roinneann an cur chuige seo an t-eagar go leanúnach ina dhá chuid agus cuireann sé an luach cuardaigh i gcomparáid leis an eilimint lár.

Conas a Oibríonn Algartam an Chuardaigh Dénártha

Tosaíonn Algartam an Chuardaigh Dénártha trí luach an chuardaigh a chur i gcomparáid le láreilimint an eagar. Má tá an luach cuardaigh cothrom leis an eilimint mheánach, filleann an t-algartam suíomh na heiliminte sin. Má tá an luach cuardaigh níos lú ná an eilimint lár, leanann an algartam an cuardach sa leath clé den eagar. Más mó an luach cuardaigh, leanann an t-algartam leis an gcuardach sa leath cheart den eagar. Athdhéantar an próiseas seo go dtí go bhfaightear luach an chuardaigh nó nach mbíonn níos mó gnéithe le cuardach.

Buntáistí agus Míbhuntáistí an Algartam Cuardaigh Dénártha

Buntáistí:

  • Ard-Éifeachtúlacht: Cuireann an algartam seo deireadh le leath na n-eilimintí i ngach céim, agus an cuardach le haghaidh eagair mhóra a bharrfheabhsú.
  • Castacht Íseal Ama: Is é O(log n) castacht ama an algartaim seo, rud a fhágann go bhfuil sé éifeachtach do thacair shonraí mhóra.

Míbhuntáistí:

  • Riachtanas Eagar Sórtáilte: Ní oibríonn an t-algartam ach le eagair sórtáilte.

Sampla agus Míniú

Smaoinigh ar shampla den Algartam Cuardaigh Dénártha a úsáid chun slánuimhir ar leith a aimsiú in eagar slánuimhir sórtáilte i 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");  
        }  
    }  
}  

Sa sampla seo, úsáidimid Algartam Cuardaigh Dénártha chun an uimhir 9 a fháil in eagar slánuimhir sórtáilte. Déanann an t-algartam atriall tríd an eagar agus cuireann sé an luach cuardaigh i gcomparáid leis an luach lár. Sa chás seo, faightear an uimhir 9 ag suíomh 4(innéacs bunaithe ar 0) san eagar.

Cé go léiríonn an sampla seo conas is féidir leis an Algartam Cuardaigh Dénártha eilimint a aimsiú in eagar slánuimhir sórtáilte, is féidir é a chur i bhfeidhm freisin ar chásanna cuardaigh eile sa Java ríomhchlárú.