Description 给定n个数,在最坏情况下用 3n/2-2 次比较找出这n个数中元素的最大值和最小值。 要求只编写函数 系统会自动在程序的最后加上如下代码: Input 包含多组测试数据。每组测试数据的第一个元素是整数的个数n,接下来是n个整数。0表示 ...
思路:运用分治的思想,将要排序的整个数组从中间劈开,分别求其左右两边的最大最小值,然后将求出的最大最小值合起来进行比较。 当左右两边的数组小到一定程度时: 数组中只有一个元素,maxNum minNum 数组中有两个元素,找出两个元素中的最大最小值 数组中大于两个元素,从中间分开,继续递归 ...
2016-12-12 22:00 0 1774 推荐指数:
Description 给定n个数,在最坏情况下用 3n/2-2 次比较找出这n个数中元素的最大值和最小值。 要求只编写函数 系统会自动在程序的最后加上如下代码: Input 包含多组测试数据。每组测试数据的第一个元素是整数的个数n,接下来是n个整数。0表示 ...
例题:金块问题 老板有一袋金块(共n块,n是2的幂(n>=2) ),最优秀的员工得到其中最重的一块,最差的员工得到其中最轻的一块。假设有一台比较重量的仪器,请你用最少的比较次数找出最重和最轻的金块。 这个问题其实就是输入n个数,找出最大和最小数的问题。 解决问题的策略 蛮力策略 ...
分治法:将一个复杂的一分为二,然后对这两部分递归调用该函数,直到找到函数出口,求解出最简单的情况 需要注意的是分治时开始和结束位置参数的选择,一开始写的是s到mid-1,另一个是mid到e,然后就会数组为奇数个时结果对,为偶数个时结果错,后面改为s到mid,另一个是mid+1到e 结果就对了。 ...
此算法时间复杂度为 O(NlogN). 思考1:思考如何求得。 可以先写出递推关系式,设T(n)为规模为n时程序运行的时间。 1.观察到26,27行运用到了递归将问题规模缩小了一半且运用了两次,因此T(n) = 2T(n/2); 2.第35至50得两个循环规模为n/2即O(n ...
终于 找到课程链接了,太赞了,屈婉玲老师真的太厉害了! http://www.chinesemooc.org/kvideo.php?do=course_progress&kvideoid=4748&classesid=1972 数组的最大值,最小值有好几种方法求解: 第一种 ...
问题描述: 分治的方法求an 算法分析: 如果 n 是偶数,可以分为 (an/2)*(an/2) 算法复杂度基本降低一半 如果 n 是奇数,可以分为 (an/2)*(an/2)*a 算法复杂度也基本降低一半 如果 n == 1 ,则直接返回 a 代码实现 ...
对于求最大子序列之和,对于我这样的菜鸟,首先想到的应该是最暴力的方法,就是将所有的子序列的和进行比较,然后出现最大值并返回答案。不过这也没啥意思,复杂度O(N2). 对这个问题,有一个相对复杂的O(NlogN)的解法,就是使用递归。其主要思想是:比较左、右、中间三部分的序列和的大小,因为中间部分 ...
一组数据中,出现次数最多的数就叫这组数据的众数。 如果有两个或两个以上个数出现次数都是最多的,那么这几个数都是这组数据的众数。 如果所有数据出现的次数都一样,那么这组数据没有众数。 例1:1 ...