算法学习——归并排序

晚上回来写

#include<iostream>
using namespace std;
const int N = 1e6+10;
int a[N],tmp[N];

void merge_sort(int a[],int L,int R){
    if(L==R)return;
    int mid = L+R >>1;
    merge_sort(a,L,mid);
    merge_sort(a,mid+1,R);
    int k = 0;
    int i = L;
    int j = mid+1;
    while(i<=mid && j<=R){
         if (a[i] <= a[j]) tmp[k ++ ] = a[i ++ ];
         else tmp[k ++ ] = a[j ++ ];
    }
    while (i <= mid) tmp[k ++ ] = a[i ++ ];
    while (j <= R) tmp[k ++ ] = a[j ++ ];
     for (i = L, j = 0; i <= R; i ++, j ++ ) a[i] = tmp[j];
    
}

int main(){
    
    int  n;
    cin>>n;
    for(int i = 0;i<n;i++){
        cin>>a[i];
    }
    
    merge_sort(a,0,n-1);
    
    for(int j = 0;j<n;j++){
        cout<<a[j]<<" ";
    }
    cout<<endl;
    
    return 0;
}
posted @ 2020-01-15 15:27  FLydoggie  阅读(109)  评论(0)    收藏  举报