You are on page 1of 4

#include<stdio.h> #include<conio.h> #include<stdlib.

h> #define MAXARRAY 100 int punt; void main1() { int i,n,key, flag=0,d, position, swap; char ans; int x[25]; clrscr(); printf("Enter how many numbers to be stored : "); scanf("%d",&n); printf("Enter the number in INCREASING ORDER PLEASE."); printf("Enter %d numbers ....",n); for(i=0;i<n;i++) { printf("\t\tElement [%d]=",i); scanf("%d",&x[i]); } for ( i = 0 ; i < ( n - 1 ) ; i++ ) { position = i; for ( d = i + 1 ; d < n ; d++ ) { if ( x[position] > x[d] ) position = d; } if ( position != i ) { swap = x[i]; x[i] = x[position]; x[position] = swap; } } printf("Sorted list in ascending order:\n"); for ( i = 0 ; i < n ; i++ ) printf("%d\n", x[i]); do { printf("Enter the number to be searched : "); scanf("%d",&key); flag = Binary_Search(x,n,key); // call to binary search function if (flag == -1) printf(" Number Not present in the given array") ; else printf(" Number %d found at %d location",key, (f lag+1)); printf(" Want to search another number ?"); while(getchar()!='\n')continue; scanf("%c",&ans); }while(ans!='n'); }

//Binary Search Function static int Binary_Search(int K[ ],int n,int key) { int low=1; int high=n; int mid; mid=(low+high)/2; /* find the mid position */ while (high>=low) { if (K[mid]==key) return(mid); else { if(key>K[mid]) low=mid+1; /* number may b e in upper half */ else high=mid-1; /* Number may be present in lower h alf */ mid=(low+high)/2; } } return(-1); } void insertion(int a[],int n) { int i,j,x,k; for(i=1;i<n;i++) { j=i; x=a[i]; while(a[j-1]>x && j>0) { a[j]=a[j-1]; j=j-1; } a[j]=x; printf("\n\n The array after pass no.%d: ",i); for(k=0;k<n;k++) printf("%4d",a[k]); } } int main2() { int a[1000],n,i; printf("\n\nEnter an integer value for total no.s of elements to be sorted: "); scanf("%3d",&n); for(i=0;i<n;i++) { printf("\n\nEnter an integer value for element no.%d: ",i+1); scanf("%4d",&a[i]);

} insertion(a,n); printf("\n\n\nFinally sorted array is : "); for(i=0;i<n;i++) printf("%4d",a[i]); getch(); return 0; } void mergesort(int a[], int low, int high); int main3(void) { int array[MAXARRAY],n; int i = 0; /* reading the elements form the users*/ printf("Enter the number of elements to be sorted:"); scanf("%d",&n); printf("Enter the elements to be sorted:\n"); for(i = 0; i < n; i++ ){ scanf("%d",&array[i]); } /* array before mergesort */ printf("Before sorting:"); for(i = 0; i < n; i++) printf(" %d", array[i]); printf("\n"); mergesort(array, 0, n - 1); /* array after mergesort */ printf("After Mergesort:"); for(i = 0; i < n; i++) printf(" %d", array[i]); printf("\n"); getch(); return 0; } void int int int int int int mergesort(int a[], int low, int high) { i = 0; length = high - low + 1; pivot = 0; merge1 = 0; merge2 = 0; working[MAXARRAY];

if(low == high) return; pivot = (low + high) / 2; mergesort(a, low, pivot); mergesort(a, pivot + 1, high); for(i = 0; i < length; i++)

working[i] = a[low + i]; merge1 = 0; merge2 = pivot - low + 1; for(i = 0; i < length; i++) { if(merge2 <= high - low) if(merge1 <= pivot - low) if(working[merge1] > working[merge2]) a[i + low] = working[merge2++]; else a[i + low] = working[merge1++]; else a[i + low] = working[merge2++]; else a[i + low] = working[merge1++]; } } void main() { while(1) { printf("Enter the operation? \n"); printf("1. Binary Search \n"); printf("2. Insertion Sort \n"); printf("3. Merge Sort\n"); printf("4. Exit \n"); scanf("%d",&punt); switch(punt) { case 1: { main1(); Binary_Search(); } break; case 2: { main2(); insertion(); } break; case 3: { main3(); mergesort(); } break; case 4: exit(0); } printf("\nPress any key to continue"); getch(); } /* End of main program */

You might also like