Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- class BinarySearch
- {
- static void Main()
- {
- int[] numbers = Console.ReadLine().Split().Select(int.Parse).ToArray();
- int search = int.Parse(Console.ReadLine());
- int index = CustomBinarySearch(numbers, 0, numbers.Length - 1, search);
- if (index < 1)
- {
- Console.WriteLine(index);
- }
- else
- {
- index = CheckIfLeftmost(numbers, index);
- Console.WriteLine(index);
- }
- }
- static int CustomBinarySearch(int[] arr, int min, int max, int keyValue)
- {
- int middleIndex = (min + max) / 2;
- if (min >= max && arr[middleIndex] != keyValue)
- {
- return -1;
- }
- if (arr[middleIndex] == keyValue)
- {
- return middleIndex;
- }
- if (keyValue < arr[middleIndex])
- {
- return CustomBinarySearch(arr, min, middleIndex - 1, keyValue);
- }
- return CustomBinarySearch(arr, middleIndex + 1, max, keyValue);
- }
- static int CheckIfLeftmost(int[] arr, int index)
- {
- int leftMost = index;
- for (int i = index; i >= 1; i--)
- {
- if (arr[i] == arr[i - 1])
- {
- leftMost = i - 1;
- }
- }
- return leftMost;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement