博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找两个有序数组中的第K个元素(find kth smallest element in 2 sorted arrays)
阅读量:7207 次
发布时间:2019-06-29

本文共 1637 字,大约阅读时间需要 5 分钟。

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

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

 

转载于:https://www.cnblogs.com/algorithmic/p/3657623.html

你可能感兴趣的文章
N!末尾有多少个零
查看>>
【优先队列】HDU 1873——看病找医生
查看>>
SQL 时间处理
查看>>
HF Reader
查看>>
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
查看>>
Css 常用属性
查看>>
GRIDVIEW多行多列合并单元格(合并列)
查看>>
sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)...
查看>>
java final
查看>>
【吐槽】VS2012的安装项目只能用InstallShield Limited Edition
查看>>
win7重装系统时,使用PE工具箱进入系统看到的“C盘变成0.2G,D盘变成48G左右”这是什么回事?...
查看>>
JQuery URL的GET参数值获取方法
查看>>
关于Char* ,CString ,WCHAR*之间的转换问题
查看>>
第十二天--Property List和NSUserDefaults
查看>>
JS Bin Tips and Bits • About
查看>>
Sharepoint学习笔记—习题系列--70-576习题解析 -(Q40-Q44)
查看>>
nodejs发展
查看>>
Fragment过度动画分析一
查看>>
UBI文件系统简介
查看>>
《现代操作系统》精读与思考笔记 第一章 引论
查看>>