将两个已排序数组原地归并到其中一个数组里去

来源:互联网 发布:程序员联合网开发区 编辑:程序博客网 时间:2024/06/04 22:47

已知A,B两已排序数组,A的缓存足够大,将A与B合并到A中形成一个有序数组。

跟着师兄的代码写的 博客-->http://dwz.cn/as2lK

void insertOnce(int *a,int pos,int len,int val){<span style="white-space:pre"></span>for(int i=len-1;i>=pos;i--)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>a[i+1]=a[i];<span style="white-space:pre"></span>}<span style="white-space:pre"></span>a[pos]=val;}int * insertMerge(int *a,int *b,int lenA,int lenB){<span style="white-space:pre"></span>int *p=a;//int *c=a;<span style="white-space:pre"></span>int j=0;//指向a的下标<span style="white-space:pre"></span>int len=lenA;//zhixiangb<span style="white-space:pre"></span>int count=0;//<span style="white-space:pre"></span>for(int i=0;i<lenB;i++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>if(a[j]>=b[i])<span style="white-space:pre"></span>{<span style="white-space:pre"></span>insertOnce(a,j,lenA,b[i]);<span style="white-space:pre"></span>j++;<span style="white-space:pre"></span>lenA++;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else<span style="white-space:pre"></span>{<span style="white-space:pre"></span>while((a[j]<b[i])&&(count<len))//判断是否遍历完a[]<span style="white-space:pre"></span>{<span style="white-space:pre"></span>j++;<span style="white-space:pre"></span>count++;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>if(count>=len)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>a[j++]=b[i];<span style="white-space:pre"></span>lenA++;<span style="white-space:pre"></span>continue;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>insertOnce(a,j,lenA,b[i]);<span style="white-space:pre"></span>j++;lenA++;<span style="white-space:pre"></span>}<span style="white-space:pre"></span><span style="white-space:pre"></span>}<span style="white-space:pre"></span>cout<<lenA<<endl;<span style="white-space:pre"></span>return p;}
void main(){<span style="white-space:pre"></span>int array0[7]={1,3,5,6};//注意长度<span style="white-space:pre"></span>int array1[]={2,3,9};<span style="white-space:pre"></span>insertMerge(array0,array1,4,3);<span style="white-space:pre"></span>for(int i=0;i<7;i++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>cout<<array0[i]<<" ";<span style="white-space:pre"></span>}}


0 0
原创粉丝点击