Método Array.BinarySearch(Array, Object) con ejemplos en C# – Part 1

Este método se utiliza para buscar un elemento específico en toda la array ordenada unidimensional mediante la interfaz IComparable que se implementa en cada elemento de la array y en el objeto especificado. Sintaxis:

public static int BinarySearch (Array array, object value);

Parámetros:

array: Es la array 1-D ordenada para buscar. valor: Es el objeto a buscar.

Valor devuelto: Devuelve el índice del valor especificado en la array especificada si se encuentra el valor ; de lo contrario, devuelve un número negativo. Hay diferentes casos de valores de retorno de la siguiente manera:

  • Si no se encuentra el valor y el valor es menor que uno o más elementos de la array , el número negativo devuelto es el complemento bit a bit del índice del primer elemento que es mayor que el valor .
  • Si no se encuentra el valor y el valor es mayor que todos los elementos de la array, el número negativo devuelto es el complemento bit a bit de (el índice del último elemento más 1).
  • Si se llama a este método con una array no ordenada, el valor devuelto puede ser incorrecto y se puede devolver un número negativo, incluso si el valor está presente en la array.

Excepciones:

  • ArgumentNullException: si la array es nula .
  • RankException: si la array es multidimensional.
  • ArgumentException: si el valor es de un tipo que no es compatible con los elementos de la array .
  • InValidOperationException: si el valor no implementa la interfaz IComparable y la búsqueda encuentra un elemento que no implementa la interfaz IComparable.

Los siguientes programas ilustran el método mencionado anteriormente: Ejemplo 1: 

csharp

// C# program to illustrate the
// Array.BinarySearch(Array, Object)
// Method
using System;
 
class GFG {
     
    // Main Method
    public static void Main(String[] args) {
         
     
    // taking an 1-D Array
    int[] arr = new int[7] {1,5,7,4,6,2,3};
     
    // for this method array
    // must be sorted
    Array.Sort(arr);
     
    Console.Write("The elements of Sorted Array: ");
     
    // calling the method to
    // print the values
    display(arr);
     
    // taking the element which is
    // to search for in a variable
    // It is not present in the array
    object s = 8;
     
     
    // calling the method containing
    // BinarySearch method
    result(arr, s);
     
    // taking the element which is
    // to search for in a variable
    // It is present in the array
    object s1 = 4;
     
     
    // calling the method containing
    // BinarySearch method
    result(arr, s1);
     
}
 
// containing BinarySearch Method
static void result(int[] arr2, object k) {
         
    // using the method
    int res = Array.BinarySearch(arr2, k);
     
    if (res < 0)
    {
        Console.WriteLine("\nThe element to search for "+
                            "({0}) is not found.", k);
    }
     
    else
    {
        Console.WriteLine("The element to search for "+
                    "({0}) is at index {1}.", k, res);
    }
         
}
     
 
// display method
static void display(int[] arr1)
{
     
    // Displaying Elements of array
    foreach(int i in arr1)
        Console.Write(i + " ");
     
}
     
}
Producción:

The elements of Sorted Array: 1 2 3 4 5 6 7 
The element to search for (8) is not found.
The element to search for (4) is at index 3.

Ejemplo 2: 

csharp

// C# program to illustrate the
// Array.BinarySearch(Array, Object)
// Method
using System;
 
class GFG {
     
    // Main Method
    public static void Main(String[] args) {
         
     
    // taking an 1-D Array
    int[] arr = new int[7] {1,5,7,4,6,2,3};
     
    // for this method array
    // must be sorted
    Array.Sort(arr);
     
    Console.Write("The elements of Sorted Array: ");
     
    // calling the method to
    // print the values
    display(arr);
     
    // it will return a negative value as
    // 9 is not present in the array
    Console.WriteLine("\nIndex of 9 is: "+
               Array.BinarySearch(arr,8));
     
}
     
 
// display method
static void display(int[] arr1)
{
     
    // Displaying Elements of array
    foreach(int i in arr1)
        Console.Write(i + " ");
     
}
     
}
Producción:

The elements of Sorted Array: 1 2 3 4 5 6 7 
Index of 9 is: -8

Puntos importantes:

  • Para este método, la array debe estar ordenada, es decir, en orden ascendente.
  • Este método no admite arrays de búsqueda que contengan índices negativos.
  • Se permiten elementos duplicados. Si el Array contiene más de un elemento igual al valor, el método devuelve el índice de solo una de las ocurrencias, y no necesariamente la primera.
  • null siempre se puede comparar con cualquier otro tipo de referencia; por lo tanto, las comparaciones con nulo no generan una excepción.
  • Este método es una operación O(log n), donde n es la longitud de la array.

Referencia:

Publicación traducida automáticamente

Artículo escrito por saurabh_1901 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *