查找两个有序数组中的第K个元素

int FindKth(int a[], int b[], int k, int astart, int aend, int bstart, int bend)
{
int aLen = aend - astart + ;
int bLen = bend - bstart + ; if (aLen == )
{
return b[bstart + k];
} if (bLen == )
{
return a[astart + k];
} if (k == )
{
return a[astart] > b[bstart] ? b[bstart] : a[astart] ;
} int amid = aLen * k / (aLen + bLen); //按比例,算出分界点
int bmid = k - amid - ; amid += astart;
bmid += bstart; if (a[amid] > b[bmid])
{
k -= (bmid - bstart + );
aend = amid;
bstart = bmid + ;
}
else
{
k -= (amid - astart + );
bend = bmid;
astart = amid + ;
}
return FindKth(a, b, k, astart, aend, bstart, bend);
} int main(int argc, char* argv[])
{
int a[] = {, , , , , , };
int b[] = {, , , }; printf("\nfind 0th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 1th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 2th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 3th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 4th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 5th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 6th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 7th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 8th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 9th it=%d\n", FindKth(a, b, , , , , ));
printf("\nfind 10th it=%d\n", FindKth(a, b, , , , , )); getchar();
return ;
}

查找两个有序数组中的第K个元素(find kth smallest element in 2 sorted arrays)的更多相关文章

  1. Coursera Algorithms week3 快速排序 练习测验: Selection in two sorted arrays(从两个有序数组中寻找第K大元素)

    题目原文 Selection in two sorted arrays. Given two sorted arrays a[] and b[], of sizes n1 and n2, respec ...

  2. [转载]寻找两个有序数组中的第K个数或者中位数

    http://blog.csdn.net/realxie/article/details/8078043 假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序 ...

  3. 选取两个有序数组中最大的K个值,降序存入另一个数组中

    原题: 假设有两个有序的整型数组int *a1, int *a2,长度分别为m和n.试用C语言写出一个函数选取两个数组中最大的K个值(K可能大于m+n)写到int *a3中,保持a3降序,并返回a3实 ...

  4. Leetcode 703题数据流中的第K大元素(Kth Largest Element in a Stream)Java语言求解

    题目链接 https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/ 题目内容 设计一个找到数据流中第K大元素的类(class) ...

  5. LeetCode 378. 有序矩阵中第K小的元素(Kth Smallest Element in a Sorted Matrix) 13

    378. 有序矩阵中第K小的元素 378. Kth Smallest Element in a Sorted Matrix 题目描述 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩 ...

  6. 两个有序数组中的中位数以及求第k个最小数的值

    解法参考 <[分步详解]两个有序数组中的中位数和Top K问题> https://blog.csdn.net/hk2291976/article/details/51107778 里面求中 ...

  7. [LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

  8. 如何寻找无序数组中的第K大元素?

    如何寻找无序数组中的第K大元素? 有这样一个算法题:有一个无序数组,要求找出数组中的第K大元素.比如给定的无序数组如下所示: 如果k=6,也就是要寻找第6大的元素,很显然,数组中第一大元素是24,第二 ...

  9. [LeetCode] 378. Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

随机推荐

  1. JavaWeb--ServletContext

    https://www.jianshu.com/p/31d27181d542 java类中获取ServletContext的方法 起因是我想要获取一个相对路径,需要用到servletContext的g ...

  2. 对abel 转译 class 过程的研究----------------------引用

    作为当下最流行的 JavaScript 编译器,Babel 替我们转译 ECMAScript 语法,而我们不用再担心如何进行向后兼容. 零.前言 虽然在 JavaScript 中对象无处不在,但这门语 ...

  3. Windows环境下MySQL面试技巧

    对话一: 面试官:重新安装mysql卡在最后一步,怎么解决? 应聘者:第一次安装完mysql,由于各种原因需要重新安装是经常遇到的问题,解决方案如下.              1)在注册表里搜索my ...

  4. layer 回调

    目前使用的layer版本为1.8.5 在调用layer的JS中,使用end来进行处理 $.layer({ type : 2, shadeClose : true, title : '选择人员', cl ...

  5. jquery的checked

    目前使用的jQuery版本为 v1.11.2 jquery判断checked的三种方法: .attr('checked'):   //看版本1.6+返回:"checked"或&qu ...

  6. mysql内存分配问题

    云数据库 MySQL 的内存是重要的性能参数,常出现由异常 SQL 请求以及待优化的数据库导致的内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换,影响业务的稳定及可用性. M ...

  7. oracle ROW_NUMBER() OVER(PARTITION BY '分组' ORDER BY '排序' DESC) 用法

    转载:https://blog.csdn.net/dbagaoshou/article/details/51330829 SELECT * FROM ( SELECT ROW_NUMBER() OVE ...

  8. char和vachar的字段长度怎么影响数据库的性能的

    1.限制规则 字段的限制在字段定义的时候有以下规则: a)                  存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度 ...

  9. Filter、Listener、Interceptor、Controller in a Request

    从以下程序运行Log 可以看出在一个Request 执行过程中 MyListener>>requestInitialized  >>>  MyFilter>> ...

  10. springboot学习问题一:启动springboot报错端口被占用解决办法

    一:问题 二:分析原因 springboot启动默认端口为8080,现在提示被占用,那我们可以修改springboot的启动端口,换一个未被占用的端口即可 三:解决方法 打开application.p ...