#include<iostream> #include<stdio.h> #define maxn 100 using namespace std; void merge(int arr[],low,mid,high){ int i,j,k; int n1=mid-low+1; int n2=high-mid; int L[n1],R[n2]; for(i=0;i<n1;i++){ L[i]=arr[low+i]; } for(j=0;j<n2;j++){ R[j]=arr[mid+1+j]; } i=0; j=0; k=low; while(i<n1&&j<n2){ if(L[i]<=R[j]){ arr[k]=L[i]; k++; i++; }else{ arr[k]=R[j]; k++; j++; } } while(i<n1){ arr[k]=L[i]; k++; i++; } while(j<n2){ arr[k]=R[j]; k++; j++; } } void mergeSort(int arr[],int low,int high){ if(low<high){ int mid=(low+high)/2; mergeSort(arr,low,mid); mergeSort(arr,mid+1,high); merge(arr,low,mid,high); } } int main(){ int arr[maxn]; cout<<"请输入一组数据:"; int i; //记载输入了多少个数 for(i=0;;i++){ cin>>arr[i]; if(getchar()==‘\n‘){ break; } } mergeSort(arr,0,i); for(int j=0;j<=i;j++){ cout<<arr[j]<<" "; } return 0; }
原文:https://www.cnblogs.com/zzyf/p/13392589.html