Бинарный поиск: Найти правую и левую границы массива, а так же его середину - C (СИ)

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

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

Здравствуйте. Подскажите пожалуйста как найти правую и левую границы массива, а так же его середину.
#include <stdio.h>
#define SIZE 10
 
int main (void){
  int aOne[SIZE], cOne, cTwo, reserve, search, left, right, midd;
  for (cOne = 0; cOne < SIZE; cOne++){
    printf ("Enter array (%d):\t", SIZE - cOne);
    scanf ("%d", &aOne[cOne]);
  }
  printf ("%s%10s\n", "Element", "Value");
  for (cOne = 0; cOne < SIZE; cOne++){
    printf ("%7d%10d\n", cOne, aOne[cOne]);
  }
  for (cOne = 0; cOne < SIZE - 1; cOne++){
    for (cTwo = 0; cTwo < SIZE - cOne - 1; cTwo++){
      if (aOne[cTwo] > aOne[cTwo + 1]){
        reserve = aOne[cTwo];
        aOne[cTwo] = aOne[cTwo + 1];
        aOne[cTwo + 1] = reserve;
      }
    }
  }
  printf ("%s%10s\n", "Element", "Value");
  for (cOne = 0; cOne < SIZE; cOne++){
    printf ("%7d%10d\n", cOne, aOne[cOne]);
  }
  printf ("Enter value for search:\t");
  scanf ("%d", &search);
  left = aOne[SIZE - (SIZE - 1)]; /*Не работает*/
  right = aOne[SIZE]; /*Не работает*/
  midd = left + right / 2; /*Не работает*/
  return 0;
}
С серединой вроде разобрался.
#include <stdio.h>
#define SIZE 10
 
int main (void){
  int aOne[SIZE], cOne, cTwo, reserve, search, left, right, midd;
  for (cOne = 0; cOne < SIZE; cOne++){
    printf ("Enter array (%d):\t", SIZE - cOne);
    scanf ("%d", &aOne[cOne]);
  }
  printf ("%s%10s\n", "Element", "Value");
  for (cOne = 0; cOne < SIZE; cOne++){
    printf ("%7d%10d\n", cOne, aOne[cOne]);
  }
  for (cOne = 0; cOne < SIZE - 1; cOne++){
    for (cTwo = 0; cTwo < SIZE - cOne - 1; cTwo++){
      if (aOne[cTwo] > aOne[cTwo + 1]){
        reserve = aOne[cTwo];
        aOne[cTwo] = aOne[cTwo + 1];
        aOne[cTwo + 1] = reserve;
      }
    }
  }
  printf ("%s%10s\n", "Element", "Value");
  for (cOne = 0; cOne < SIZE; cOne++){
    printf ("%7d%10d\n", cOne, aOne[cOne]);
  }
  printf ("Enter value for search:\t");
  scanf ("%d", &search);
  left = aOne[0];
  right = aOne[9];
  midd = (left + right) / 2;
  if (search == midd){
    printf ("Ok!\n");
  } else{
 
  }
  return 0;
}

Решение задачи: «Бинарный поиск: Найти правую и левую границы массива, а так же его середину»

textual
Листинг программы
left = aOne[0];
right = aOne[SIZE - 1];
midd = aOne[SIZE / 2 - 1];

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


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

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

9   голосов , оценка 3.667 из 5
Похожие ответы