c# - How to perform binary search on an array

Perform a binary search on an Array
The Array class provides methods for creating, manipulating, searching, and sorting arrays. The Array class is not part of the System.Collections namespaces. However, it is still considered a collection because it is based on the IList interface. An element is a value in an Array. The length of an Array is the total number of elements it can contain. The Array has a fixed capacity.

The following .net c# tutorial code demonstrates how we can perform a binary search on an Array instance. Binary search on an Array instance is worked on a sorted Array. So, we have to sort an Array instance first, and then we have to perform the binary search on the sorted Array instance. In this .net c# tutorial code, we used Array Sort() and BinarySearch() methods to perform a binary search on an Array instance.

The Array Sort() method sorts the elements in a one-dimensional array. The Array BinarySearch() method searches a one-dimensional sorted Array for a value, using a binary search algorithm. The Array BinarySearch(Array, Object) method overload searches an entire one-dimensional sorted array for a specific element, using the IComparable interface implemented by each element of the array and by the specified object.

The Array BinarySearch(Array, Object) method returns the index of the specified value in the specified array if the value is found otherwise it returns a negative number. The BinarySearch (Array array, object? value) method throws several exceptions such as it throws ArgumentNullException if the array is null. It also throws RankException if the array is multidimensional. The method throws ArgumentException if the value is of a type that is not compatible with the elements of the array.
array-binary-search.aspx

<%@ Page Language="C#" AutoEventWireup="true"%>
<%@ Import Namespace="System.IO" %>

<!DOCTYPE html>    
<script runat="server">  
    protected void Button1_Click(object sender, System.EventArgs e)    
    {  
        string[] colors = new string[]  
        {  
            "white",  
            "green",  
            "yellow",  
            "blue",  
            "pink",  
        };

        Label1.Text = "colors array.........<br />";
        foreach (string s in colors)
        {
            Label1.Text += s + "<br />";
        }

        //binary search work correctly only on a pre sorted array.
        Array.Sort(colors);

        Label1.Text += "<br />sorted colors array.........<br />";
        foreach (string s in colors)  
        {  
            Label1.Text += s + "<br />";  
        }

        int index = Array.BinarySearch(colors, "pink");
        Label1.Text += "<br />index of color [pink] by binary search = " + index.ToString();
    }    
</script>    

<html xmlns="http://www.w3.org/1999/xhtml">    
<head id="Head1" runat="server">    
    <title>c# example - array binary search</title>    
</head>    
<body>    
    <form id="form1" runat="server">    
    <div>    
        <h2 style="color:DarkBlue; font-style:italic;">    
            c# example - array binary search
        </h2>    
        <hr width="550" align="left" color="LightBlue" />      
        <asp:Label     
            ID="Label1"     
            runat="server"    
            Font-Size="Large"    
            >    
        </asp:Label>    
        <br /><br />  
        <asp:Button     
            ID="Button1"     
            runat="server"     
            Text="test array binary search"    
            OnClick="Button1_Click"  
            Height="40"    
            Font-Bold="true"    
            />    
    </div>    
    </form>    
</body>    
</html>