У меня есть эта часть кода:
int arrayBinary_search(int myarray[], int key){
int selector;
int low_limit = 0;
int high_limit = SIZE;
while (1){
selector = (low_limit+high_limit)/2;
printf("The selector is: %d\n", selector);
if (myarray[selector] == key){
return 1;
}
else {
if (low_limit==selector || high_limit==selector)
break;
if (key < myarray[selector])
high_limit = selector;
else
low_limit = selector;
printf("The high_limit is: %d\n", high_limit);
printf("The low_limit is: %d\n", low_limit);
}
}
}
Этот код выполняет двоичный поиск в массиве. Это работает, но while(1)
не приятно видеть. Я хотел бы реализовать какое-то условие, чтобы заменить это "1" в то время. Условие было бы, что если внутри цикла while, и это нарушает его. Я попытался с: while (!(low_limit==selector) && !(high_limit==selector))
, но он останавливается после первого цикла, так как после первого цикла, «селектор» имеет то же значение «high_limit».
Полный код здесь .