2.1.5 Median of Two Sorted Arrays
2015-12-12 00:41
309 查看
问题
答案
#include <stdio.h> //使用线性搜索,算法时间复杂度为O(m+n) int get_median(int *a, int la, int *b, int lb) { int i, j; int median = 0; //中值数 int mid = (la + lb) / 2; //两个数组长度和的中间下表 int odd = !((la + lb) % 2); //两个数组长度和为偶数标志 if (!odd) mid++; for (i = j = 0; (i + j + 0) < mid; ) { if (a[i] < b[j]) { median = a[i++]; } else if (a[i] > b[j]) { median = b[j++]; } } if (odd) { if (i >= la) median = (median + b[j]) / 2; else if (j >= lb) median = (median + a[i]) / 2; else median = (median + (a[i]<b[j]?a[i]:b[j])) / 2; } return median; } int main(void) { int a[100], b[100]; int la, lb; int i; int median = 0; i = 0; printf("input array 1, end with -1:\n"); do { scanf("%d", &a[i]); } while (a[i++] != -1); la = --i; i = 0; printf("input array 2, end with -1:\n"); do { scanf("%d", &b[i]); } while (b[i++] != -1); lb = --i; median = get_median(a, la, b, lb); printf("median is %d\n", median); return 0; }
结果
相关文章推荐
- JS Map 和 List 的简单实现代码
- js模块化编程require.js学习摘记
- 10012---JavaScript--类型转换
- 涨姿势了,没进过机房的伙伴看过来
- linux ipv6临时地址
- HDOJ 1002 A + B Problem II
- 总结:ARM逻辑和高级C(朱老师物联网学习)
- 【数据结构】Java实现二叉树遍历(递归)
- Swift 开源那点事儿
- 学习Maven之Cobertura Maven Plugin
- vmware fusion和mac共享目录
- ruby中迭代器枚举器的理解
- Qt中的tr()与translate()
- 【数据结构】Java实现二叉树遍历(非递归)
- 创业的第八十六天
- My way to Python - Day05 - 面向对象
- Swift中编写单例的正确方式
- ORACLE ERP 的前世今生
- 普法知识(29):什么是法律后果?
- RecyclerView的使用