The C programming language provides two search techniques. They are as follows:
Here, three things can happen, as follows:
If the middle element matches the keyword, the search will end successfully here
If the middle element is larger than the keyword, the search will be performed on the left partition.
If the middle element is smaller than the keyword, the search will be performed on the right partition.
Input (i/p) - Unsorted list of elements, keyword.
Output (o/p) -
key = 20 mid = (low +high) /2
The following is a C program to find the smallest element in an array using binary search:
#include<stdio.h> int main(){ int a[50], n, i, key, flag = 0, low, mid, high; printf("enter the no: of elements:"); scanf ("%d",&n); printf("enter the elements:"); for(i=0; i<n; i++) scanf( "%d", &a[i]); printf("enter a key element:"); scanf ("%d", &key); low = 0; high = n-1; while (low<= high ){ mid = (low + high) /2; if (a[mid] == key){ flag = 1; break; } else{ if (a[mid] > key) high = mid-1; else low = mid+1; } } if (flag == 1) printf ("search is successful"); else printf("search is unsuccessful"); return 0; }
When the above program is executed, it produces the following result −
Run 1: enter the no: of elements:5 enter the elements: 12 34 11 56 67 enter a key element:45 search is unsuccessful Run 2: enter the no: of elements:3 enter the elements: 12 34 56 enter a key element:34 search is successful
Given the following C program, it is found by using binary search Minimum element in the array −
#include<stdio.h> void Bmin(int *a, int i, int n){ int j, temp; temp = a[i]; j = 2 * i; while (j <= n){ if (j < n && a[j+1] > a[j]) j = j + 1; if (temp < a[j]) break; else if (temp >= a[j]){ a[j / 2] = a[j]; j = 2 * j; } } a[j/2] = temp; return; } int binarysearchmin(int *a,int n){ int i; for(i = n/2; i >= 1; i--){ Bmin(a,i,n); } return a[1]; } int main(){ int n, i, x, min; int a[20]; printf("Enter no of elements in an array</p><p>"); scanf("%d", &n); printf("</p><p>Enter %d elements: ", n); for (i = 1; i <= n; i++){ scanf("%d", &a[i]); } min = binarysearchmin(a, n); printf("\minimum element in an array is : %d", min); return 0; }
When the above program is executed, it produces the following result−
Enter no of elements in an array 5 Enter 5 elements: 12 23 34 45 56 minimum element in an array is: 12
The above is the detailed content of How to find the smallest element in an array using binary search algorithm in C language?. For more information, please follow other related articles on the PHP Chinese website!