归并排序模板
#include<bits/stdc++.h> using namespace std; void merge(int *arr,int l,int m,int r){ int ls=m-l,lr=r-m+1; int la[ls],ra[lr]; for(int i=l;i<=m-1;i++) la[i-l+1]=arr[i]; for(int j=m;j<=r;j++) ra[j-m+1]=arr[j]; int i=1,j=1,e=l; while(i!=ls+1||j!=lr+1){ if((la[i]<ra[j]||j==lr+1)&&i!=ls+1){ arr[e]=la[i++]; }else{ arr[e]=ra[j++]; } e++; } return ; } void mergesort(int *arr,int l,int r){ int m=(l+r)/2+1; if(l==r){ return ; }else{ mergesort(arr,l,m-1); mergesort(arr,m,r); merge(arr,l,m,r); } } int main() { int arr[7]={0,6,9,8,1,7,3}; mergesort(arr,1,6); for(int i=1;i<=6;i++){ cout<<arr[i]<<" "; } cout<<endl; return 0; }