Двоичный поиск в массиве - C#

Узнай цену своей работы

Формулировка задачи:

Я не могу понять какой записан тут способ поиска двоичный или другой совсем??? если не двоичный, то тогда как записать двоичный?? помогите пожалуйста написать. у меня даже псевдокод есть, но я по нему не понимаю. все равно как записать двоичный. Вот что то писала но мне кажется это не то совсем.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication12
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. short p, n, m;
  12. Console.Write("m = ");
  13. // ввод, преобразование и присваивание размер массива A
  14. m = Convert.ToInt16(Console.ReadLine());
  15. Console.Write("n = ");
  16. // ввод, преобразование и присваивание размер массива B
  17. n = Convert.ToInt16(Console.ReadLine());
  18. int maxValue = 100;
  19. Random Rnd = new Random();
  20. int t1 = Environment.TickCount;
  21. int[] a = new int[m];
  22. for (int i = 0; i < m; i++)
  23. {
  24. a[i] = Rnd.Next(0, maxValue); // Случайное число от 0 до 100
  25. }
  26. int[] b = new int[n];
  27. for (int i = 0; i < n; i++)
  28. {
  29. b[i] = Rnd.Next(0, maxValue); // Случайное число от 0 до 100
  30. }
  31. for (int i = 0; i < m; i++)
  32. {
  33. Console.Write(" " + a[i]); // Вывод массива А
  34. Console.WriteLine();
  35. }
  36. for (int i = 0; i < n; i++)
  37. {
  38. Console.Write(" " + b[i]); // Вывод массива В
  39. Console.WriteLine();
  40. //Сортировка массива А методом "Пузырька"
  41. }
  42. for (int i = 0; i < m; i++)
  43. for (int j = m - 1; j > i; j--)
  44. {
  45. if (a[j - 1] > a[j])
  46. {
  47. int x = a[j - 1];
  48. a[j - 1] = a[j];
  49. a[j] = x;
  50. }
  51. //Сортировка массива В методом "Пузырька"
  52. }
  53. for (int i = 0; i < n; i++)
  54. for (int j = n - 1; j > i; j--)
  55. if (b[j - 1] > b[j])
  56. {
  57. int x = b[j - 1];
  58. b[j - 1] = b[j];
  59. b[j] = x;
  60. }
  61. for (int i = 0; i < m; i++)
  62. Console.Write(" " + a[i]); // Вывод массива А
  63. Console.WriteLine();
  64. for (int i = 0; i < n; i++)
  65. Console.Write(" " + b[i]); // Вывод массива В
  66. int Num_C = 0;
  67. int[] c = new int[n];
  68. // заполнение массива С нулями
  69. // поиск элементов
  70. for (int i = 0; i < m; i++)
  71. {
  72. for (int j = i + 1; j < m; j++)
  73. {
  74. if (b[i] == b[j])
  75. {
  76. p = 0;
  77. for (int k = 0; k < n; k++)
  78. if (a[k] == b[i])
  79. {
  80. p++;
  81. }
  82. if(p == 1)
  83. {
  84. //запись в массив C
  85. c[Num_C] = b[i];
  86. Num_C++;
  87. }
  88. }
  89. }
  90. }
  91. Console.WriteLine();
  92. for (int i = 0; i < Num_C; i++)
  93. Console.Write(" " + c[i]); // Вывод массива C
  94. int t2 = Environment.TickCount;
  95. Console.WriteLine("Продолжительность работы: " + ((t2 - t1) / 1000));//вывод на экран продолжительности выполнения программы
  96. Console.ReadKey();
  97. }
  98. }
  99. }

Решение задачи: «Двоичный поиск в массиве»

textual
Листинг программы
  1. private static int BinarySearch(int[] arr, int val)
  2.         {
  3.             Array.Sort(arr);
  4.  
  5.             int right = arr.Length - 1;
  6.             int left = 0;
  7.  
  8.             if (arr[left] > val) return -1;
  9.             if (arr[right] < val) return -1;
  10.  
  11.             while (left < right)
  12.             {
  13.                 int mid = left + (right - left)/2;
  14.                 if (val <= arr[mid]) right = mid;
  15.                 else if (val > arr[mid]) left = mid + 1;
  16.                 else return mid;
  17.             }
  18.  
  19.              return -1;
  20.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы