Бинарный поиск: Найти правую и левую границы массива, а так же его середину - 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];