分治法求中位数java_算法实验之分治法求中位数 | 学步园

利用分治策略试设计一个O (log n)时间的

要输入的内容在文件1.txt中,输出的结果在文件2.txt中。

#include

#include

using namespace std;

template

T mid(T *a,T *b,int len)

{

if(len==1)

return *a

if(len==2)

{

int temp=*a>=*b?*a:*b;

if(temp==*a)

return temp

else

return temp

}

int n;

if(len%2==0)

n=len/2;

else

n=len/2+1;

if(*(a+n-1)==*(b+n-1))

return *(a+n-1);

else if(*(a+n-1)

return mid(a+n-1,b,n);

else if(*(a+n-1)>*(b+n-1))

return mid(a,b+n-1,n);

}

int main()

{

int a[5];

int b[5];

ifstream f1("1.txt");

ofstream f2("2.txt");

int len;

f1>>len;

for(int i=0;i

f1>>a[i];

for(i=0;i

f1>>b[i];

int *pa=a;

int *pb=b;

int m=mid(pa,pb,len);

cout<

f2<

f1.close();

f2.close();

return 1;

}

运行结果:

0_13294616297q0V.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值