面试题整理-合并数组
来源:互联网 发布:php社区源码 编辑:程序博客网 时间:2024/06/05 02:07
题意:
需要将A,B两个已排序数组合并至A数组中,假设A数组中的空间是够用的。那么请写这么一个合并函数。
当然,最后的结果也一定是有序的。
解题:
很好写。直接从后面开始向前合并
#include <stdio.h>#include <stdlib.h>#include <string.h>int a[4096];int b[4096];int _cmp(const void *a, const void *b) {int x = (int)(*(int *)a);int y = (int)(*(int *)b);return x - y;}void create(int *a, int *b, int *l, int *m) {int alen = rand() % 1024 + 1;int blen = rand() % 1024 + 1;int i = 0;for (i = 0; i < alen; ++i) {a[i] = rand() % 4096;b[i] = rand() % 4096;}qsort(a, alen, sizeof(int), _cmp);qsort(b, blen, sizeof(int), _cmp);*l = alen; *m = blen;}int merge(int *a, const int *b, int alen, int blen) {int len = alen + blen + 2, dst = alen + blen;while (alen >= 0 || blen >= 0) {if (blen < 0 || (alen >= 0 && a[alen-1] >= b[blen-1])) a[--len] = a[--alen];else a[--len] = b[--blen];}return dst;}int main(void) {int alen, blen, len;int i = 0;create(a, b, &alen, &blen);len = merge(a, b, alen, blen);for (i = 0; i < len; ++i) {printf("%d ", a[i]);}return 0;}
- 面试题整理-合并数组
- 面试题整理 4 合并两个排序的数组
- 面试题整理13 合并排序链表去重
- 近期面试题整理(二叉树的中序遍历、合并排序链表数组)
- 面试题--两有序数组合并
- 面试题3 有序数组合并
- 面试题:数组元素统计、合并两个有序数组
- 面试题:两个无序数组合并成一个有序数组
- 知名IT企业面试题整理(八)--合并
- 《剑指offer》面试题4(合并数组)
- 九章算法面试题5 有序数组合并
- 九章算法面试题86 合并排序数组
- [剑指offer]面试题17:合并两个排序的数组
- 面试题整理-数组做为平衡二叉树进行访问
- 面试题整理-从数组中删除指定元素
- 面试题整理9 连续子数组的最大和
- 笔试面试题整理
- 面试题整理
- java中的jar打包成可执行文件,可以避免在linux中的java程序运行时内存剧增现象
- 运行jar 提示 Failed to load Main-Class manifest attribute from
- 去除ArrayList集合中的重复元素
- VC技术内幕笔记
- Java程序持续Full GC的处理经历(转)
- 面试题整理-合并数组
- 将自定义对象作为元素存到ArrayList集合中,并去除重复元素
- 对象数组或list排序及Collections排序原理
- java中的Iterator和Iterable 区别 ,以及为么要有iterable接口
- 浅谈大型网站的算法和架构(1)
- 关于函数strtok和strtok_r的使用要点和实现原理
- OSGi的EventAdmin
- UNIX文件结构(转自UNIX/AIX操作系统基础教程)
- http中的gzip