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 + " "); } }
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 + " "); } }
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