TheCeleryK Ответов: 1

Как я могу реализовать двоичный поиск в своем коде?


Я пытаюсь использовать двоичный поиск, чтобы найти определенное пользователем число в уже отсортированном массиве. У меня уже есть алгоритм бинарного поиска, но я не знаю, как взять пользовательский ввод и искать его.

Что я уже пробовал:

двоичный поиск:
static void BinarySearch(int[] arr, int key)
        {
            int minNum = 0;
            int maxNum = arr.Length - 1;

            while (minNum <= maxNum)
            {
                int mid = (minNum + maxNum) / 2;
                if (key == arr[mid])
                {
                    Console.WriteLine(++mid);
                }
                else if (key < arr[mid])
                {
                    minNum = mid - 1;
                }
                else
                {
                    maxNum = mid + 1;
                }
            }
            Console.WriteLine("None");
        }

Я пытался назвать это космосом:
Program p = new Program();
string userInput3;
Console.WriteLine("\nWhich number do you wish to search for in the array?");
userInput3 = Console.ReadLine();
int Int1 = Convert.ToInt32(userInput3);
int Int2 = int.Parse(userInput3);
p.BinarySearch(arr, userInput3);

gggustafson

Почему бы не использовать массив.Ищет?

1 Ответов

Рейтинг:
4

phil.o

Вы должны проанализировать пользовательский ввод, чтобы получить правильное целое число; и передать это целое число функции вместо длины массива:

Console.WriteLine("\nWhich number do you wish to search for in the array?");
int key;
while (!int.TryParse(Console.ReadLine(), out key)) { }
BinarySearch(arr, key);
Здесь мы продолжаем пытаться анализировать, пока это не удастся.


[no name]

Спасибо за ответ, у меня есть еще один вопрос: как бы я напечатал, действительно ли пользовательский ввод находится в массиве или нет, потому что мой код, похоже, этого не делает, и я точно не знаю почему? Спасибо еще раз.