注:上中位数1 2 3 4 5 6为3(偶数两个中位数为前面那个) 思路:去掉不可能为上中位数的,剩下的简化组合求上中位数。
数字代表第几个数,求上中位数(第5小的数)
case1: 3=3’ 则3或者3’为上中位数 case2: 3>3’ 不可能为上中位数的为3(1 2 1’ 2’ 3’已经5个数比它小) 4 5 1’ 2’,可能的为1 2 3’ 4’ 5’ 则这种情况下我们可以把这10个数简化为:
位置位置位置1233’4’5’注:3已经不可能作为上中位数,但递归要求参数格式,加入凑格式,上下各传3个。
数字代表第几个数,求上中位数(第4小的数)
case1: 2=2’ 则2或者2’为上中位数 case2: 2>2’ 不可能为上中位数的为3,4,1’,2’,可能的为1 2 3’ 4’ 则这种情况下我们可以把这8个数简化为:
位置位置123’4’注:递归结束条件 , 每个数组只剩下1个数,返回较小的。
方法:两个数组取前k个数,转化为长度相等的两个有序数组寻找上中位数
方法:两个数组分别取后3个数,长度为10的数组淘汰7个数,长度为17的数组淘汰14个数,剩下的数取上中位数只能是第24(7+14+3)小的数。 附加单独判断第8个数和第15个数和另一个数组最大的数比较,若大于则这个数就是第25小的数. 否则扔掉这两个数,让剩下的4个数求上中位数。(转化为长度相等的两个有序数组寻找上中位数)(8[10淘汰]+15[17淘汰]+2[4选上中位数淘汰]=25)
位置位置91016’17’方法:取第一个数组全体和第二个数组一部分(淘汰前三个数和后三个数,单独比较第4个数,是返回,不是转化为:长度相等的两个有序数组寻找上中位数)
略
