#include <stdio.h> #include <stdint.h> int binary_search(uint8_t *arr, uint8_t n, uint8_t key) { int i =0; int start=0; int stop=n; int mid=(n/2); while(1) { // printf("Mid: %d arr :%d\n",mid,arr[mid]); if(arr[mid]>key && mid!=0) //200>250 { stop=mid; mid=stop/2; } else if(arr[mid]<key && mid!=n-1)//200<250 { start=mid; mid=mid+(stop-start)/2; } else if(arr[mid]==key) //20==20 { return mid; } else { // return -1; } i++; } return -1; } int main() { uint8_t n, key; scanf("%hhu", &n); uint8_t arr[100]; for (uint8_t i = 0; i < n; i++) { scanf("%hhu", &arr[i]); } scanf("%hhu", &key); int index = binary_search(arr, n, key); printf("%d", index); return 0; }
Test Cases
Test Results
Input
6 5 10 15 20 25 30 20
Expected Output
3