//函数主体 void sort(vector& nums){ //将每一组的个数不断从1到2到小于n的最大值 int k=1,n=nums.size(); while(k & nums,int k){ int n=nums.size(),i=0; while(i<=n-2*k){//最后的一组或者两组最后进行处理 merge(nums,i,i+k,i+2*k); i+=2*k; } if((n-i)>k){//剩两组,需要对剩下两组进行归并 merge(nums,i,i+k,n); } } //相邻两组归并的具体细节,就是一个排序插入的过程 void merge(vector & nums,int ll,int mid,int rr){ vector temp(rr-ll,INT_MIN); int a=ll,b=mid,val=0; while(a



