Двоичный поиск в массиве - C#
Формулировка задачи:
Я не могу понять какой записан тут способ поиска двоичный или другой совсем??? если не двоичный, то тогда как записать двоичный?? помогите пожалуйста написать. у меня даже псевдокод есть, но я по нему не понимаю. все равно как записать двоичный. Вот что то писала но мне кажется это не то совсем.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication12 { class Program { static void Main(string[] args) { short p, n, m; Console.Write("m = "); // ввод, преобразование и присваивание размер массива A m = Convert.ToInt16(Console.ReadLine()); Console.Write("n = "); // ввод, преобразование и присваивание размер массива B n = Convert.ToInt16(Console.ReadLine()); int maxValue = 100; Random Rnd = new Random(); int t1 = Environment.TickCount; int[] a = new int[m]; for (int i = 0; i < m; i++) { a[i] = Rnd.Next(0, maxValue); // Случайное число от 0 до 100 } int[] b = new int[n]; for (int i = 0; i < n; i++) { b[i] = Rnd.Next(0, maxValue); // Случайное число от 0 до 100 } for (int i = 0; i < m; i++) { Console.Write(" " + a[i]); // Вывод массива А Console.WriteLine(); } for (int i = 0; i < n; i++) { Console.Write(" " + b[i]); // Вывод массива В Console.WriteLine(); //Сортировка массива А методом "Пузырька" } for (int i = 0; i < m; i++) for (int j = m - 1; j > i; j--) { if (a[j - 1] > a[j]) { int x = a[j - 1]; a[j - 1] = a[j]; a[j] = x; } //Сортировка массива В методом "Пузырька" } for (int i = 0; i < n; i++) for (int j = n - 1; j > i; j--) if (b[j - 1] > b[j]) { int x = b[j - 1]; b[j - 1] = b[j]; b[j] = x; } for (int i = 0; i < m; i++) Console.Write(" " + a[i]); // Вывод массива А Console.WriteLine(); for (int i = 0; i < n; i++) Console.Write(" " + b[i]); // Вывод массива В int Num_C = 0; int[] c = new int[n]; // заполнение массива С нулями // поиск элементов for (int i = 0; i < m; i++) { for (int j = i + 1; j < m; j++) { if (b[i] == b[j]) { p = 0; for (int k = 0; k < n; k++) if (a[k] == b[i]) { p++; } if(p == 1) { //запись в массив C c[Num_C] = b[i]; Num_C++; } } } } Console.WriteLine(); for (int i = 0; i < Num_C; i++) Console.Write(" " + c[i]); // Вывод массива C int t2 = Environment.TickCount; Console.WriteLine("Продолжительность работы: " + ((t2 - t1) / 1000));//вывод на экран продолжительности выполнения программы Console.ReadKey(); } } }
Решение задачи: «Двоичный поиск в массиве»
textual
Листинг программы
private static int BinarySearch(int[] arr, int val) { Array.Sort(arr); int right = arr.Length - 1; int left = 0; if (arr[left] > val) return -1; if (arr[right] < val) return -1; while (left < right) { int mid = left + (right - left)/2; if (val <= arr[mid]) right = mid; else if (val > arr[mid]) left = mid + 1; else return mid; } return -1; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д