ALGORITHM:
STEP 1: Start the program.
STEP 2: Read the value of n.
STEP 3: Set a for loop to read the elements of array.
for(i = 0; i < n; i++)
STEP 4: Set a for loop.
for(i = 0; i < n; i++)
STEP 5: Nest another for loop.
for(j = i + 1; j < n; j++)
STEP 6: Check the condition a[i] > a[j].
STEP 7: If so swap the two values using temporary variable t as
t = a[i]
a[i] = a[j]
a[j] = t
STEP 8: Else go back to step 6.
STEP 9: Set a for loop to print the value of array a.
for(i = 0; i < n; i++)
STEP 10: Read the search key as k.
STEP 11: Assign low = 0 and high = n – 1.
STEP 12: Call the function binsearch(a, k, low, high)
STEP 13: Check if ans is not equal to 1, if so print the position b + i. Else print that element is not found.
STEP 14: Stop the program.
FUNCTION BINARY SEARCH (int *x[ ], int x, int low, int high)
STEP 1: Set a while loop till low is greater than high.
STEP 2: Assign mean value of low and high to mid.
mid = (high + low) / 2
STEP 3: Assign the value of x[mid] to p.
p = x[mid]
STEP 4: Check if x < p if so assign.
high = mid - 1
STEP 5: Else check whether x > p if so then assign.
low = mid + 1
STEP 6: Else check whether x == p, if so return mid.
STEP 7: Else return -1.
SAMPLE PROGRAM:
#include<stdio.h>
#include<conio.h>
binarysearch(int *[], int, int, int);
void main()
{
int i, j, k, t, low, high, n, a[50], ans;
clrscr();
printf(" \n Enter the number of elements: ");
scanf(" %d ", &n);
printf(" \n Enter the array element one by one \n ");
for(i = 0; i < n; i++)
scanf(" %d ", &a[i]);
printf(" \n Sorted array \n ");
for(Ii= 0; i < n; i++)
for(j = I + 1; j < n; j++)
if(a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
for(i =0; i < n; i++)
printf(" \t a[%d] = %d \n ", i, a[i]);
printf("\t Enter the element to search:");
scanf("%d",&k);
low = 0;
high = n - 1;
ans = binarysearch(a, k, low, high);
if(ans !=-1)
printf(" \n The number %d is present in the list at location %d. ", k, ans);
else
printf(" The number is not present in the list. ");
getch();
}
int binarysearch(int *a[], int x, int low, int high)
{
int mid, p;
if(low > high)
return-1;
mid = (low + high) / 2;
p = a[mid];
if(x == p)
return(mid);
else if(x < p)
return binarysearch(a, x, low, mid - 1);
else
return binarysearch(a, x, mid + 1, high);
}
OUTPUT:
Enter the number of elements: 6
Enter the array elements one by one
23
45
89
98
09
65
Sorted Array 09 23 45 65 89 98
Enter the element to search 23.
The number 23 is present in the list at location 2.
Enter the element to search 50.
The number is not present in the list.
ALSO READ:
-- Program To Understand Working Of Address Concept.
-- Program On Use Of Array & Pointer Concept Together.
-- Program On Pointers & 2 - Dimensional Array.
-- Program On Strings Into Array Of Pointers.
-- Program To Accept & Add Ten Numbers Using Pointers.
-- Program To Implement Minimum Spanning Tree Using Functions, Pointers & Structures.
-- Program To Implement 8 Queens Problem Using Arrays, Pointers & Functions.
-- Program To Implement Quick Sort Using Pointers, Functions & Arrays.
-- Program With Algorithm To Implement Bubble Sort Using Pointers.
-- Program To Implement Recursive Algorithm Using Pointers.
-- Program On Strings Into Array Of Pointers.
-- Program On Pointers & 2 - Dimensional Array.
-- Program On Use Of Array & Pointer Concept Together.
-- Program On Arithmetic Calculations Using Pointers.
-- Program To Add Two Numbers Using Pointers.
-- Program To Accept & Add Ten Numbers Using Pointers.
... Back To C Program Index.
Comments
Post a Comment
Please share your opinions and suggestions or your experience in the comments section. This way we can all help each other...
Experienced guys can share their resumes at admin@interview-made-easy.com