算法导论8-4
来源:互联网 发布:gcp网络报名 编辑:程序博客网 时间:2024/05/17 05:50
问题:n个红色水壶和n个蓝色水壶,相同颜色水壶可盛的水都不一样多,但每一个红色水壶都有一个对应的蓝色水壶,二者可盛的水一样多。不同颜色的水壶可以互相比较判断可盛的水是否一样多。但是相同颜色的水壶不能相互比较。设计一个随机算法,其期望的比较次数为O(nlgn).
思路:红色水壶和蓝色水壶比较,可在找到与其容量一样多的蓝色水壶的同时将剩下的蓝色水壶分为两组:容量比它大的和容量比它小的;
利用找到的相同容量的蓝色水壶可以反过来与剩下的红色水壶比较,将红色水壶也分为两组:容量比它大的和容量比它小的;
伪代码:
Match(RED,BLUE,p,r)1.let C[p,...,r] be a new array//记录配对信息 2.if RED.length==13.C[p]=p4.i=random(p,r)5.q=FAST-SORT(BLUE,p,r,RED[i])//以RED[i]为主元快排BLUE6.FAST-SORT(RED,p,r,BLUE[q])//以BLUE[q] 为主元快排RED 7.Match(RED,BLUE,p,q-1) 8.Match(RED,BLUE,q+1,r)
0 0
- 算法导论8-4
- 算法导论 思考题 8-4
- 算法导论 4-4
- 算法导论6.5-8
- 算法导论10.2.8
- 算法导论 3.1-8
- 算法导论14.1-8
- 算法导论22.2-8
- 算法导论(8)
- 算法导论10.2-8
- 算法导论14.3-4
- 算法导论15.4-4
- 算法导论11.1-4
- 算法导论 1.1-4
- 算法导论 2.1-4
- 算法导论 2.3-4
- 算法导论 2-4
- 算法导论11.1-4
- 一些暂存的动画
- windows FTP上传
- 自动释放池和ARC
- 05-图3. 六度空间 (30)
- hadoop平台进行小型网站的日志分析
- 算法导论8-4
- java中的数据转换
- Android 4.4 Dialog 被状态栏遮挡的解决方法
- Android ExpandableListView的使用技巧
- C#动态建库建表学习
- iOS 动画
- Linux添加新硬盘、分区、格式化、自动挂载
- java中set和get方法的理解使用
- BZOJ 1002