Método Array.BinarySearch(Array, Int32, Int32, Object) con ejemplos en C#

El método Array.BinarySearch(Array, int32, int32, Object) se usa para buscar un valor en un rango de elementos en una array ordenada unidimensional, usando la interfaz IComparable implementada por cada elemento de la array y por el valor especificado. Busca solo en un límite específico que define el usuario.

Sintaxis:

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

Parámetros:

  • array: Es una array 1-D en la que tenemos que buscar un elemento.
  • index: Es el índice de inicio del rango desde donde se desea iniciar la búsqueda.
  • length: Es la longitud del rango en el que queremos buscar.
  • valor: Es el valor que vamos 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.
  • ArgumentOutOfRangeException: si el rango es menor que el límite inferior O la longitud es menor que 0.
  • ArgumentException: si el índice y la longitud no especifican el rango válido en la array O el valor es del 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 discutido anteriormente:

Ejemplo 1:

// C# Program to illustrate the use of 
// Array.BinarySearch(Array, Int32, 
// Int32, Object) Method
using System;
using System.IO;
  
class GFG {
      
    // Main Method
    static void Main()
    {
        // initializing the integer array
        int[] intArr = {42, 5, 7, 12, 56, 1, 32};
          
        // sorts the intArray as it must be 
        // sorted before using method
        Array.Sort(intArr);
          
        // printing the sorted array
        foreach(int i in intArr) Console.Write(i + " "
                                              + "\n");
                                                
        // intArr is the array we want to find
        // and 1 is the starting index
        // of the range to search. 5 is the 
        // length of the range to search.
        // 32 is the object to search
        int index = Array.BinarySearch(intArr, 1, 5, 32);
          
        if (index >= 0) {
              
            // if the element is found it 
            // returns the index of the element
            Console.Write("Index: " + index);
        }
          
        else {
              
            // if the element is not
            // present in the array or
            // if it is not in the 
            // specified range it prints this
            Console.Write("Element is not found");
        }
    }
}
Producción:

1 
5 
7 
12 
32 
42 
56 
Index: 4

Ejemplo 2: Si el elemento no está en la array, imprime un valor negativo o si está fuera del rango.

// C# Program to illustrate the use of 
// Array.BinarySearch(Array, Int32, 
// Int32, Object) Method
using System;
using System.IO;
  
class GFG {
      
    // Main Method
    static void Main()
    {
        // initializing the integer array
        int[] intArr = {42, 5, 7, 12,
                          56, 1, 32};
                            
        // sorts the intArray as it must be 
        // sorted before using Method
        Array.Sort(intArr);
          
        // printing the sorted array
        foreach(int i in intArr) Console.Write(i + " "
                                              + "\n");
                                                
        // intArr is the array we want to
        // find. and 1 is the starting
        // index of the range to search. 5 is 
        // the length of the range to search
        // 44 is the object to search
        int index = Array.BinarySearch(intArr, 1, 5, 44);
          
        // as the element is not present
        // it prints a negative value.
        Console.Write("Index :" + index);
    }
}
Producción:

1 
5 
7 
12 
32 
42 
56 
Index :-7

Referencia:

Publicación traducida automáticamente

Artículo escrito por Krishna_Sai_Ketha 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 *