Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- void merge(int arr[],int l,int mid,int r) {
- int n1 = mid-l+1;
- int n2 = r-mid;
- int a[n1],b[n2];
- for(int i=0;i<n1;i++) {
- a[i] = arr[l+i];
- }
- for(int i=0;i<n2;i++) {
- b[i] = arr[mid+1+i];
- }
- int i=0,j=0,k=l;
- while(i<n1 && j<n2) {
- if(a[i]<b[j]) {
- arr[k] = a[i];
- k++; i++;
- }
- else {
- arr[k] = b[j];
- j++; k++;
- }
- }
- while(i<n1 || j<n2) {
- if(i<n1) {
- arr[k] = a[i];
- k++; i++;
- }
- else {
- arr[k] = b[j];
- j++; k++;
- }
- }
- }
- void mergeSort(int arr[],int l,int r) {
- if(l<r) {
- int mid=(l+r)/2;
- mergeSort(arr,l,mid);
- mergeSort(arr,mid+1,r);
- merge(arr,l,mid,r);
- }
- }
- int main () {
- int n; scanf("%d",&n);
- int a[n]; for(int i=0;i<n;i++) {
- scanf("%d",&a[i]);
- }
- mergeSort(a,0,n-1);
- for(int i=0;i<n;i++) {
- printf("%d ",a[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment