.NET 4.x Исправить код двоичного поиска - C#
Формулировка задачи:
нужно подправить код что бы он заработал. на данный момент выдает одну ошибку: Ошибкe4Элемент "a" не существует в текущем контексте. Пробовал через int сделать не получается!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int[] mass = new int[100];
for (int i = 0; i < mass.Length; i++)
{
mass[i] = rnd.Next();
}
int n;
int x;
/* Номер первого элемента в массиве */
int first = 0;
/* Номер элемента в массиве, СЛЕДУЮЩЕГО ЗА последним */
int last = n;
/* Если просматриваемый участок непустой, first < last */
/* ВНИМАНИЕ! В отличие от более простого (first + last) / 2,
* этот код устойчив к переполнениям.
*
* Если first и last беззнаковые, возможен код:
* (unsigned)(first+last) >> 1.
*/
int mid = first + (last - first) / 2;
if (n == 0)
{
/* массив пуст */
}
else if (a[0] > x)
{
/* не найдено;
* если вам надо вставить его со сдвигом - то в позицию 0
*/
}
else if (a[n - 1] < x)
{
/* не найдено;
* если вам надо вставить его со сдвигом - то в позицию n
*/
}
while (first < last)
{
if (x <= a[mid])
last = mid;
else
first = mid + 1;
mid = first + (last - first) / 2;
}
/* Если условный оператор if (n == 0) и т.д. в начале опущен -
* значит, тут раскомментировать!
*/
if (/* last < n && */ a[last] == x)
{
/* Искомый элемент найден. last - искомый индекс */
}
else
{
/* Искомый элемент не найден. Но если вам вдруг надо его
* вставить со сдвигом, то его место - last.
*/
}
}
}
}Решение задачи: «.NET 4.x Исправить код двоичного поиска»
textual
Листинг программы
Console.WriteLine("Введите Х");
int x = Convert.ToInt32(Console.ReadLine());