merge空间复杂度O(1)
//
//问题:
//数组al[0,mid-1] 和 al[mid,num-1],都分别有序。将其merge成有序数组al[0,num-1],要求空间复杂度O(1)
//
//
#include<iostream>using std::cout;using std::cin;using std::endl;void swap(int &a,int &b){int t=a;a=b;b=t;}void merge(int a[],int m,int n){int i = 0, j = m+1; int k = 0; while (a[k] <= a[j]) k++; swap(a[k], a[j]); i = j;j=j+1; for (k = k+1; k <n; ++k) { if (a[i] <= a[j]) { swap(a[k], a[i]); if(i==j-1){if(k<=m)i=m+1;elsei=k+1;}elsei++; } else { swap(a[k], a[j]); if(k==i)i=j; j = j + 1; } } }int a[]={3,6,9,10,1,4,7,8,11};void main() { int m=3;int n=9;merge(a,m,n);for( int k=0;k<n;k++)cout<<a[k]<<" ";cout<<endl;system("pause");} 你觉得这个代码有问题吗?