整型数组处理算法(五)求两个有序数组的共同元素
2013-09-28 00:05
381 查看
求两个有序数组的共同元素,比如数组a={1,2,3,8,9}和b={8,9,10},则输出output={8,9}
实现如下:
测试代码:
测试结果就不贴了吧,有兴趣的朋友可以copy code试一试。
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12114211
实现如下:
// 找出两个数组的共同元素 int* FindCommon(int* a, int* b, int nA, int nB, int& nOut) { int i = 0; int j = 0 ; vector<int> vec_comm; int* output = NULL; while (i < nA && j < nB) { if (a[i] < b[j]) ++i ; else if(a[i] == b[j]) { vec_comm.push_back(a[i]); cout << a[i] << endl ; ++i ; ++j ; } else// a[i] > b[j] ++j ; } nOut = vec_comm.size(); int nCoun = 0; if (nOut>0) { output=new int[nOut]; vector<int>::iterator itorComm; for(itorComm=vec_comm.begin(); itorComm!=vec_comm.end(); itorComm++) { output[nCoun] = *itorComm; nCoun++; } } return output; }
测试代码:
int main() { int* a= new int[6]; int* b= new int[3]; a[0]=2; a[1]=3; a[2]=4; a[3]=6; a[4]=8; a[5]=9; b[0]=8; b[1]=9; b[2]=10; int nOut = 0; int* output = FindCommon(a, b, 6, 3, nOut); for (int i=0; i<nOut; i++) { cout << output[i] << "," ; } cout << endl; delete[] a; a=NULL; delete[] b; b=NULL; delete[] output; output=NULL; cout << endl; return 0; }
测试结果就不贴了吧,有兴趣的朋友可以copy code试一试。
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12114211
相关文章推荐
- 数据结构面试题总结4——数组:求两个有序数组中的共同元素
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- 整型数组处理算法(六)合并两个数组
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 求两个集合的交集以及求两个有序数组并集的第k小元素
- 使用两个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 从两个有序数组的并集中寻找第k小元素
- C语言,求两个有序数组的公共元素
- 两个有序数组判断存在相同元素
- 请教一个算法问题,有两个数组A,B,判断A中是否至少有一个元素和B中元素相同
- 将两个数组中的元素有序存入到一个链表中(C语言)
- 两个有序数组的中位数 【算法】
- 整型数组处理算法(二)文件中有一组整数,要求排序后输出到另一个文件中
- 借鉴快速排序的思想,实现算法将整型数组a[0...n]分成两块,使得第一块元素均大于等于0,第二块的元素均小于0,要求算法原地工作且时间复杂度为O(n)
- 两个有序的数组,挑选出相同的元素
- 求两个有序数组的中位数或者第k小元素
- 算法--两个有序数组合并
- 如何计算两个有序整型数组的交集
- 在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。