int M_Search(int a[],int b[],int n){ int s1=0,m1=n-1,z1,s2=0,m2=n-1,z2; //分别表示数组a,b的首位数,末位数,中位数。 while(s1!=m1||s2!=m2) { z1=(s1+m1)/2; z2=(s2+m2)/2; if(a[z1]=b[z2]) return a[m1]; else if(a[z1]<b[z2]) //如果a的中位数小于b的中位数 { if((s1+m1)%2==0) //如果数组个数为奇数 { s1=z1; //舍弃a中位以前的数 m2=z2; //舍弃b中位以后的数 } else //数组个数为偶数 { s1=z1+1; //舍弃a中位及中位以前的数 m2=z2; //舍弃b中位以后的数 } } else //a的中位数大于b的中位数 { if((s2+m2)%2==0) //如果数组个数为奇数 { m1=z1; //舍弃a中位以后的数 s2=z2; //舍弃b中位以前的数 } else //如果数组个数为偶数 { m1=z1; //舍弃a中位以后的数 s2=z2+1; //舍弃b中位及中位以前的数 } } } return a[s1]<b[s2]? a[s1]:b[s2];}
目前暂无任何回答
- 0 回答
- 0 关注
- 979 浏览
添加回答
举报
0/150
提交
取消