有两个有序数组A和B,设计算法求出A和B的中位数。
情况1. 数组A、B长度相等,设为n。
1)分别计算A和B的中位数m1和m2。
2)比较m1和m2。如果m1等于m2,那么最终结果就是m1(m2)。
3)如果m1大于m2,那么中位数必定在和两个子数组中。
4)如果m1小于m2,那么中位数必定在和两个子数组中。
5)重复上述步骤,直至两个子数组的大小均为2,那么最终结果为。...
分类:
编程语言 时间:
2014-12-06 20:21:04
阅读次数:
117
如题:求一个数组的子数组的最大和,要求O(n)时间复杂度。由于有了O(n)时间复杂度的限制,所以暴力求解的O(n^2)方法肯定不行。再考虑递归求一个数组a[n]的子数组的最大和,可以分解为a[i]子数组的最大和以及a[n-i-1]之间的某种情况a[n]的子数组最大和等于a[i]子数组的最大和;a[n...
分类:
编程语言 时间:
2014-12-05 00:30:08
阅读次数:
212
题目:输入一个整型数组,数组里有正数和负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。实现:boolg_InvalidInput=false;
intFindGreatestSumOfSubArray(int*pData,intnLength)
{
if((pData==NULL)||(nLength<=0))
{
..
分类:
编程语言 时间:
2014-12-04 18:18:50
阅读次数:
229
题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数...
分类:
编程语言 时间:
2014-11-29 23:01:37
阅读次数:
283
问题:给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度。解法一:用一个数组保存从左边到右边前i个元素的乘积。用另一个数组保存从右边到左边N-i个元素的乘积。然后结果就为两个数组中元素对应的乘积,复杂度为o(N)。解法二:设N个...
分类:
编程语言 时间:
2014-11-27 21:49:36
阅读次数:
182
1.基本思想 快速排序利用了分治策略。分治策略可以分为3个步骤: 分解:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。 解决:递归的求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。 合并:将子问题的解组合成原问题的解。 对一个典型的子数组A[p..r]进行快速排序的分治...
分类:
编程语言 时间:
2014-11-27 18:21:34
阅读次数:
260
问题描述:设a[0:n-1]是一个有n个元素的数组,k(0a[low2] a[low1+1]a[low2+1] ... a[high1] a[high2]void swap(int a[],int low1,int high1,int low2,int high2){ int temp;...
分类:
编程语言 时间:
2014-11-25 20:25:35
阅读次数:
203
描述: 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。样例: 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。求解:/** 求解思路:
当我们加上一个正数时,和会增加...
分类:
编程语言 时间:
2014-11-19 01:47:58
阅读次数:
162
首尾相连数组的最大子数组和时间限制:1000ms | 内存限制:65535KB难度:4描述给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0...
分类:
其他好文 时间:
2014-11-15 20:09:32
阅读次数:
215