南邮ACM算法与数据结构设计(2010-2011-2第5讲)1.ppt

南邮ACM算法与数据结构设计(2010-2011-2第5讲)1.ppt

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南邮ACM算法与数据结构设计(2010-2011-2第5讲)1.ppt

ACM算法与数据结构设计 班 级 :仙林校区ACM选修班 上课地点和时间 理论:教2-402:星期3 (18:30开始) 实践:(仙林)计算中心 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 第5讲:ACM竞赛之高效算法设计 5.5 再谈排序与检索 归并排序 程序:归并排序(从大到小) void merge_sort(int *A, int x, int y, int *T) { if(y-x1) { int m=x+(y-x)/2; //划分 int p=x, q=m, i=x; merge_sort(A, x, m, T); //递归求解 merge_sort(A, m, y, T); //递归求解 while( pm || qy ){ if( q = y || ( p m A[p] = A[q] )) T[i++]=A[p++]; //从左半数组复制到临时空间 else T[i++] = A[q++]; //从右半数组复制到临时空间 } for ( i=x ; iy; i++) A[i]=T[i]; //从辅助空间复制回A数组 } } 归并排序的时间复杂度:O(nlogn) 第5讲:ACM竞赛之高效算法设计 5.5 再谈排序与检索 快速排序 快速排序算法 划分问题:把数组的各个元素重排后分成左右两部分,使得左边的任意元素都小于或等于右边的任意元素。 递归求解:把左右两部分分别排序。 合并问题:不用合并,因为此时数组已经完全有序。 求第k小的数 输入n个整数和一个正整数k(1 ≤ k ≤ n),输出这些整数从小到大排序后的第k个。n ≤ 107 时间复杂度为O(n)。 第5讲:ACM竞赛之高效算法设计 5.5 再谈排序与检索 二分查找 逐步缩小范围法是一种常见的思维方法。二分查找便是基于这种思路,它遵循分治三步法,把原序列划分成元素个数尽量接近的两个子序列,然后递归查找。二分查找只适用于有序序列。 二分查找一般写成非递归形式。 第5讲:ACM竞赛之高效算法设计 5.5 再谈排序与检索 二分查找 迭代法 int bserch(int *A, int x, int y, int v) { int m; while (xy) { m = x+(y-x)/2; if (A[m] == v) return m; else if (A[m] v) y=m; else x=m+1; } return -1; } 第5讲:ACM竞赛之高效算法设计 5.6 递归和分治 棋盘覆盖问题 有一个2k*2k的方格棋盘,恰有一个方格式黑色的,其他为白色。你的任务是用包含3个方格的L型牌覆盖所有白色方格。黑色方格不能被覆盖,且任意一个白色方格不能同时被两个或更多牌覆盖。如图所示为L型牌的4中旋转方式。 L型牌 第5讲:ACM竞赛之高效算法设计 5.6 递归和分治 棋盘覆盖问题 采用分治法:把棋盘切为4块,则每一块都是2k-1*2k-1的。有黑格的那一块可以用递归解决,但其他3块并没有黑格子,可以构造出一个黑格子,如图所示。递归边界也不难看出:k=1时一块牌子就够了。 棋盘覆盖问题的递归解法 第5讲:ACM竞赛之高效算法设计 5.7 贪心法 贪心法是通过分步决策(stepwise decision)的方法来求解问题。 贪心

文档评论(0)

资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档