IP-19.c (2376B)
1 /* Write a C program that includes a user-defined function named binarySearch with the 2 signature int binarySearch(int arr[], int size, int target);. The function should perform a 3 binary search on a sorted array of integers and return the index of the target element if 4 found, and -1 otherwise. */ 5 6 #include <stdio.h> 7 8 int inputArray(int[], int); 9 // void sortArray(int[], int); 10 int binarySearch(int[], int, int); 11 12 int main() 13 { 14 int size; 15 printf("How many element do you want to enter: "); 16 scanf("%d", &size); 17 int arr[size]; 18 int target = inputArray(arr, size); 19 // sortArray(arr, size); // If needed 20 int index = binarySearch(arr, size, target); 21 if (index != -1) 22 { 23 printf("\nElement %d is found at index %d.", target, index); 24 } 25 else 26 { 27 printf("\nElement %d is not found.", target); 28 } 29 return 0; 30 } 31 32 int inputArray(int arr[], int size) 33 { 34 int i, target; 35 for (i = 0; i < size; i++) 36 { 37 printf("Enter element for position %d: ", i); 38 scanf("%d", &arr[i]); 39 } 40 printf("\nEnter the target element: "); 41 scanf("%d", &target); 42 return target; 43 } 44 45 /* void sortArray(int arr[], int size) 46 { 47 // using Bubble Sort... 48 49 int tempArr[size], i, j, temp; 50 printf("\nBefore Sorting:\n["); 51 for (i = 0; i < size; i++) 52 { 53 printf("%d", arr[i]); 54 if (i != size - 1) 55 { 56 printf(", "); 57 } 58 } 59 printf("]\n"); 60 for (i = 0; i < size - 1; i++) 61 { 62 for (j = 0; j < size - i - 1; j++) 63 { 64 if (arr[j] > arr[j + 1]) 65 { 66 temp = arr[j]; 67 arr[j] = arr[j + 1]; 68 arr[j + 1] = temp; 69 } 70 } 71 } 72 printf("\nAfter Sorting:\n["); 73 for (i = 0; i < size; i++) 74 { 75 printf("%d", arr[i]); 76 if (i != size - 1) 77 { 78 printf(", "); 79 } 80 } 81 printf("]\n"); 82 } 83 */ 84 85 int binarySearch(int arr[], int size, int target) 86 { 87 int low = 0; 88 int high = size - 1; 89 int mid; 90 while (low <= high) 91 { 92 mid = low + ((high - low) / 2); 93 if (arr[mid] == target) 94 { 95 return mid; 96 } 97 else if (arr[mid] > target) 98 { 99 high = mid - 1; 100 } 101 else if (arr[mid] < target) 102 { 103 low = mid + 1; 104 } 105 } 106 return -1; 107 }