Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <limits.h>
- void merge(int* a,int la,int lb);
- void mergeSort(int* p,int l)
- {
- if(l<=1)
- return;
- int q = l>>1;
- mergeSort(p,q);
- mergeSort(p+q,l-q);
- merge(p,q,l-q);
- }
- void merge(int* a,int la,int lb)
- {
- int* a1 = new int[la+1];
- int* b1 = new int[lb+1];
- for(int i = 0;i<la;++i)
- a1[i] = a[i];
- int* b = a+la;
- for(int i = 0;i<lb;++i)
- b1[i] = b[i];
- a1[la] = INT_MAX;
- b1[lb] = INT_MAX;
- int p = 0, q = 0;
- for(int i = 0;i<la+lb;++i)
- if(a1[p]<=b1[q])
- a[i] = a1[p++];
- else
- a[i] = b1[q++];
- delete a1;
- delete b1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement