Skip to main content

Posts

Showing posts with the label Divide and Conquer

Merge Sort using Divide and Conquer in C

#include #include #define MAX 50 void display(int[MAX],int); void Merge_sort(int[MAX],int,int); void Combine(int[MAX],int,int,int); void main() { int i,T[MAX],n; clrscr(); printf("\n Enter number of element you want:"); scanf("%d",&n); for(i=0;i low) { mid=(low+high)/2; Merge_sort(T,low,mid); Merge_sort(T,mid+1,high); Combine(T,low,mid,high); } } void Combine(int T[MAX],int low,int mid,int high) { int i,j,k,temp[MAX]; k=low; i=low; j=mid+1; while(i OUTPUT Enter number of element you want:7 Enter element[0]:77 Enter element[1]:55 Enter element[2]:44 Enter element[3]:66 Enter element[4]:44 Enter element[5]:22 Enter element[6]:99 ------------------------------------------------------------------------------------ Elements before sorting: 77 55 44 66 44 22 99 ------------------------------------------------------------------------------------ --------------------------------------------------------------------...

Quick Sort Using Divide an Conquer

#include #include #define MAX 50 //int pivotpoint; void display(int[MAX],int); void Quick_sort(int[MAX],int low,int high); int pivot(int[MAX],int,int); void main() { int i,T[MAX],n; clrscr(); printf("\n Enter number of element you want:"); scanf("%d",&n); for(i=0;i low) { pivotpoint=pivot(T,low,high); Quick_sort(T,low,pivotpoint-1); Quick_sort(T,pivotpoint+1,high); } } int pivot(int T[MAX],int low,int high) { int i,j; int pivotitem,temp; pivotitem=T[low]; i=low; j=high; while(i pivotitem) j--; if(i OUTPUT Enter number of element you want:10 Enter element[0]:56 Enter element[1]:33 Enter element[2]:2 Enter element[3]:90 Enter element[4]:67 Enter element[5]:45 Enter element[6]:43 Enter element[7]:77 Enter element[8]:56 Enter element[9]:2 ------------------------------------------------------------------------------------ Elements before sorting: 56 33 2 90 67 45 43 77 56 2 ---------------------...

Multiplication of Large Integer using Divide and Conquer

#include #include #include long prod(long,long); long noOfDigit(long,long); void main() { long m,n; clrscr(); printf("\n-----------------------------------------------"); printf("\nMULTIPLICATION USING DIVIDE & CONQUER"); printf("\n-----------------------------------------------"); printf("\n Enter number1:"); scanf("%ld",&m); printf("\n Enter number2:"); scanf("%ld",&n); printf("\n-----------------------------------------------"); printf("\n multiplication of %ld and %ld is:%ld",m,n,prod(m,n)); printf("\n-----------------------------------------------"); getch(); } long prod(long u,long v) { long x,y,w,z; long n,m,p,q,r; n=noOfDigit(u,v); if(u==0 || v==0) { return 0; } else if(n =n) max=m; else max=n; while(max>0) { max=max/10; b++; } return b; } OUTPUT ----------------------------------------------- MULTIPLICATION USING DIVI...

Heap sort using Divide & Conquer

#include #include #define MAX 30 struct heap{ int S[MAX]; int heapsize; }H; void siftdown(struct heap* H,int i) { int parent,largerchild; int siftkey; int spotfound; siftkey=H->S[i]; parent=i; spotfound=0; while(2*parent heapsize && spotfound==0) { if(2*parent heapsize && H->S[2*parent] S[2*parent+1]) largerchild=2*parent+1; else largerchild=2*parent; if(siftkey S[largerchild]) { H->S[parent]=H->S[largerchild]; parent=largerchild; } else spotfound=1; } H->S[parent]=siftkey; } int root(struct heap* H) { int keyout; keyout=H->S[1]; H->S[1]=H->S[H->heapsize]; H->heapsize=H->heapsize-1; siftdown(H,1); return keyout; } void removekeys(int n,struct heap* H) { int i; for(i=n;i>=1;i--) { H->S[i]=root(H); } } void makeheap(int n,struct heap* H) { int i; H->heapsize=n; for(i=n/2;i>=1;i--) siftdown(H,i); } void heapsort(int n,struct heap* H) { makeheap(n,H); removekeys(n,H...