divide and conquer in Date Structures and Algorithm Analysis in C

Divide:Smaller problemsare solved recursively(except basecases).

Conquer:The solution tothe original problem is then formed fromthe solutions to thesubproblems.

 

 

a procedure consisits of two half-sizedrecursive calls and O(N) additional work, then the total time will be O(NlogN)

 

# closest-points problem

 

Divide:

Either the closest points are both onthe left, or they are both on the righ, or one is on the left and theother is on the right.

 

Conquer:

dL,dR -> recursion

dC(cross)

 

 

 

If not too many points in the strip ->brute force

 

In the worst case, every point is in thestrip -> use y coordinates:

Δy < d


/* points are all in the strip */
/* and sorted by y coordinates */
for( i= 0; i< NumPointsInStrip; i++ )
    for ( j = i+ 1; j < NumPointsInStrip;j++ )
        if ( Dist_y( Pi , Pj)> d)
  break;
        else  if ( Dist( Pi, Pj ) < d)
   d = Dist( Pi , Pj);

In the worst case, at most 7 points pj areconsidered for any point pi. So the time to compute dC is O(N)

==> a=3,b=2,k=1

==>O(NlogN)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值