Sha256: 5ce8716bb6ce5685c34fdd6eb8881a51bae88267c4c590f873310e5a2c68368b

Contents?: true

Size: 785 Bytes

Versions: 188

Compression:

Stored size: 785 Bytes

Contents

public class BinarySearch
{
    private readonly int[] _input;

    public BinarySearch(int[] input) => _input = input;

    public int Find(int target)
    {
        if (_input.Length == 0)
            return -1;
        
        return FindHelper(target, 0, _input.Length - 1);
    }

    private int FindHelper(int target, int minIndex, int maxIndex)
    {
        var middleIndex = (minIndex + maxIndex) / 2;

        if (_input[middleIndex] == target)
            return middleIndex;

        if (middleIndex <= 0 || middleIndex >= _input.Length - 1 || minIndex == maxIndex)
            return -1;

        if (_input[middleIndex] > target)
            return FindHelper(target, minIndex, middleIndex - 1);

        return FindHelper(target, middleIndex + 1, maxIndex);
    }
}

Version data entries

188 entries across 188 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.179 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.178 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.177 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.176 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.175 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.174 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.173 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.172 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.171 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.170 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.169 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.167 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.166 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.165 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.164 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.163 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.162 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.161 tracks/csharp/exercises/binary-search/Example.cs
trackler-2.2.1.160 tracks/csharp/exercises/binary-search/Example.cs