Бинарный поиск: Найти правую и левую границы массива, а так же его середину - 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];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д