算法学习——归并排序
晚上回来写
#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; }

浙公网安备 33010602011771号