merge空间复杂度O(1)

来源:互联网 发布:网龙网络2018校招 编辑:程序博客网 时间:2024/05/16 05:03
//
//问题:
//数组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");} 

你觉得这个代码有问题吗?

原创粉丝点击