Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int seq_search(int [], int, int);
- int bin_search(int [], int, int);
- int rbin_search(int [],int, int, int);
- void main()
- {
- // int arr[]={5,100};
- // int arr[]={5};
- // int arr[]={5,7,9,30,31,39};
- // int arr[]={2,2,5,5,5,5,7,7,7,9,9,9,9,9};
- // int arr[]={100};
- // int arr[]={};
- int arr[]={-5,-3,0,5,39};
- int i,key,size;
- size=sizeof(arr)/sizeof(int);
- // printf("%d",size);
- //sequential search
- printf("Using Sequential Search: ");
- if((i=(seq_search(arr,key=5,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(seq_search(arr,key=-3,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(seq_search(arr,key=39,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(seq_search(arr,key=100,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- //Non recursive binary search
- printf("\n\n\nUsing Binary Search(Non-recursive): ");
- if((i=(bin_search(arr,key=5,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(bin_search(arr,key=-3,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(bin_search(arr,key=39,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(bin_search(arr,key=100,size)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- //recursive binary search
- printf("\n\n\nUsing Binary Search(recursive): ");
- if((i=(rbin_search(arr,key=5,0,size-1)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(rbin_search(arr,key=-3,0,size-1)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(rbin_search(arr,key=39,0,size-1)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- if((i=(rbin_search(arr,key=100,0,size-1)))!=-1)
- {
- printf("\nFound %d at position %d", key, i);
- }
- else
- {
- printf("\n%d was not found",key);
- }
- printf("\n");
- }
- int seq_search(int arr[], int key, int size)
- {
- int i;
- for(i=0;i<size;i++)
- {
- if(arr[i]==key)
- {
- return i;
- }
- }
- return -1; //not found
- }
- int bin_search(int arr[], int key, int size)
- {
- int low=0, high=size-1,mid;
- while(high>=low)
- {
- mid=(high+low)/2;
- if(arr[mid]==key)
- {
- return mid;
- }
- else if(key<arr[mid])
- {
- high=mid-1;
- }
- else
- {
- low=mid+1;
- }
- }
- return -1; //not found
- }
- int rbin_search(int arr[], int key, int low, int high)
- {
- int mid;
- if(high<low)
- {
- return -1; //not found
- }
- mid=(high+low)/2;
- if(arr[mid]==key)
- {
- return mid;
- }
- else if(key<arr[mid])
- {
- return (rbin_search(arr, key, low, mid-1));
- }
- else
- {
- return (rbin_search(arr, key, mid+1, high));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement