logo

Algorisme de cerca binària

En aquest article, parlarem de l'algoritme de cerca binària. La cerca és el procés de trobar algun element concret a la llista. Si l'element està present a la llista, el procés s'anomena reeixit i el procés retorna la ubicació d'aquest element. En cas contrari, es diu que la cerca no ha tingut èxit.

La cerca lineal i la cerca binària són les dues tècniques de cerca populars. Aquí parlarem de l'algoritme de cerca binària.

La cerca binària és la tècnica de cerca que funciona de manera eficient en llistes ordenades. Per tant, per cercar un element en alguna llista mitjançant la tècnica de cerca binària, ens hem d'assegurar que la llista estigui ordenada.

La cerca binària segueix l'enfocament de dividir i guanyar en què la llista es divideix en dues meitats i l'element es compara amb l'element central de la llista. Si es troba la coincidència, es retorna la ubicació de l'element central. En cas contrari, cerquem qualsevol de les meitats en funció del resultat produït a través del partit.

NOTA: La cerca binària es pot implementar en elements de matriu ordenats. Si els elements de la llista no estan ordenats, primer els hem d'ordenar.

Ara, vegem l'algorisme de la cerca binària.

Algorisme

 Binary_Search(a, lower_bound, upper_bound, val) // 'a' is the given array, 'lower_bound' is the index of the first array element, 'upper_bound' is the index of the last array element, 'val' is the value to search Step 1: set beg = lower_bound, end = upper_bound, pos = - 1 Step 2: repeat steps 3 and 4 while beg val set end = mid - 1 else set beg = mid + 1 [end of if] [end of loop] Step 5: if pos = -1 print 'value is not present in the array' [end of if] Step 6: exit 

Funcionament de la cerca binària

Ara, vegem el funcionament de l'algoritme de cerca binari.

Per entendre el funcionament de l'algorisme de cerca binari, prenem una matriu ordenada. Serà fàcil entendre el funcionament de la cerca binària amb un exemple.

Hi ha dos mètodes per implementar l'algorisme de cerca binària:

  • Mètode iteratiu
  • Mètode recursiu

El mètode recursiu de cerca binària segueix l'enfocament de dividir i conquerir.

Siguin els elements de la matriu -

Algorisme de cerca binària

Deixeu que l'element a cercar sigui, K = 56

Hem d'utilitzar la fórmula següent per calcular mig de la matriu -

 mid = (beg + end)/2 

Per tant, a la matriu donada -

suplicar = 0

final = 8

mig = (0 + 8)/2 = 4. Per tant, 4 és la meitat de la matriu.

Algorisme de cerca binària
Algorisme de cerca binària
Algorisme de cerca binària

Ara, s'ha trobat l'element a cercar. Per tant, l'algorisme retornarà l'índex de l'element coincident.

Complexitat de la cerca binària

Ara, vegem la complexitat temporal de la cerca binària en el millor dels casos, el cas mitjà i el pitjor dels casos. També veurem la complexitat espacial de la cerca binària.

1. Complexitat temporal

Caixa Complexitat temporal
Millor cas O(1)
Cas mitjà O (inici de sessió)
Pitjor dels casos O (inici de sessió)
    Complexitat del millor cas -En la cerca binària, el millor dels casos es produeix quan l'element a cercar es troba en la primera comparació, és a dir, quan el primer element central és l'element a cercar. El millor dels casos és la complexitat temporal de la cerca binària O(1). Complexitat mitjana del cas -La complexitat mitjana del temps de cas de la cerca binària és O (logn). Complexitat del pitjor cas -En la cerca binària, el pitjor dels casos es produeix, quan hem de seguir reduint l'espai de cerca fins que només tingui un element. La complexitat temporal de la cerca binària en el pitjor dels casos és O (logn).

2. Complexitat espacial

Complexitat espacial O(1)
  • La complexitat espacial de la cerca binària és O(1).

Implementació de la cerca binària

Ara, anem a veure els programes de cerca binària en diferents llenguatges de programació.

Programa: Escriu un programa per implementar la cerca binària en llenguatge C.

 #include int binarySearch(int a[], int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; /* if the item to be searched is present at middle */ if(a[mid] == val) { return mid+1; } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; int main() a[]="{11," 14, 25, 30, 40, 41, 52, 57, 70}; given array val="40;" value n="sizeof(a)" sizeof(a[0]); size of res="binarySearch(a," 0, n-1, store result printf('the elements are - '); for (int i="0;" < n; i++) printf('%d ', a[i]); printf('
element %d', (res="=" -1) not present array'); at %d position array', res); 0; pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-5.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in C++.</p> <pre> #include using namespace std; int binarySearch(int a[], int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; /* if the item to be searched is present at middle */ if(a[mid] == val) { return mid+1; } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; int main() a[]="{10," 12, 24, 29, 39, 40, 51, 56, 70}; given array val="51;" value n="sizeof(a)" sizeof(a[0]); size of res="binarySearch(a," 0, n-1, store result cout<<'the elements are - '; for (int i="0;" < n; i++) cout< <a[i]<<' cout<<'
element '<<val; (res="=" -1) not present array'; at '<<res<<' position 0; pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-6.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in C#.</p> <pre> using System; class BinarySearch { static int binarySearch(int[] a, int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; if(a[mid] == val) { return mid+1; /* if the item to be searched is present at middle */ } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; static void main() int[] a="{9," 11, 23, 28, 38, 45, 50, 56, 70}; given array int val="70;" value n="a.Length;" size of res="binarySearch(a," 0, n-1, store result console.write('the elements are - '); for (int i="0;" < n; i++) console.write(a[i] + ' console.writeline(); console.writeline('element (res="=" -1) not present array'); at position pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-7.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in Java.</p> <pre> class BinarySearch { static int binarySearch(int a[], int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; if(a[mid] == val) { return mid+1; /* if the item to be searched is present at middle */ } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; public static void main(string args[]) int a[]="{8," 10, 22, 27, 37, 44, 49, 55, 69}; given array val="37;" value n="a.length;" size of res="binarySearch(a," 0, n-1, store result system.out.print('the elements are: '); for (int i="0;" < n; i++) system.out.print(a[i] + ' system.out.println(); system.out.println('element is: (res="=" -1) not present array'); at position pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-8.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in PHP.</p> <pre> = $beg) { $mid = floor(($beg + $end)/2); if($a[$mid] == $val) { return $mid+1; /* if the item to be searched is present at middle */ } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if($a[$mid] <$val) { return binarysearch($a, $mid+1, $end, $val); } * if the item to be searched is greater than middle, then it can only in right subarray else $beg, $mid-1, -1; $a="array(7," 9, 21, 26, 36, 43, 48, 54, 68); given array $val="68;" value $n="sizeof($a);" size of $res="binarySearch($a," 0, $n-1, store result echo 'the elements are: '; for ($i="0;" $i < $n; $i++) ' , $a[$i]; <br>&apos; , &apos;Element to be searched is: &apos; , $val; if ($res == -1) echo &apos; <br>&apos; , &apos;Element is not present in the array&apos;; else echo &apos; <br>&apos; , &apos;Element is present at &apos; , $res , &apos; position of array&apos;; ?&gt; </$val)></pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-9.webp" alt="Binary Search Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <hr></val)></pre></val)></pre></val)></pre></val)>

Sortida

Algorisme de cerca binària

Per tant, això és tot sobre l'article. Espero que l'article us sigui útil i informatiu.