求两无序不重复数组的交集
来源:互联网 发布:国产平板电脑知乎 编辑:程序博客网 时间:2024/05/22 10:22
求两无序不重复数组的交集
//输入:a[]={2, 8,10,4,6,7};b[]={9,3,2,7, 8,5};
//输出:{2,7,8}
[思路]:
1)对两数组进行排序;
2)一次循环判断a和b中元素是否相等,相等则输出;不等则小的值++。
时间复杂度:O(nlogn)
#include "stdafx.h"#include"iostream"using namespace std;//快速排序//(1)快排之分割int split(int a[],int left, int right){int k=a[left];while(left<right){while(left<right&&a[right]>=k)--right;a[left]=a[right]; while(left<right&&a[left]<=k)++left;a[right]=a[left];}a[left]=k;return left;}//(2)快排之递归 void quickCurve(int a[], int left,int right){int SplitPoint=0;if(left<right){SplitPoint=split(a, left, right);quickCurve(a,left,SplitPoint-1);quickCurve(a,SplitPoint+1,right);}}//(3)快排 void quickSort(int a[], int len) {quickCurve(a,0,len-1);}int _tmain(int argc, _TCHAR* argv[]){int a[]={9,3,2,7,8,5};int b[]={2,8,10,4,6,7};int m=sizeof(a)/sizeof(a[0]);int n=sizeof(b)/sizeof(b[0]);//cout<<m<<endl;//1)对两数组进行排序;quickSort(a,m);/*for(int i=0;i<m;i++)cout<<a[i]<<" ";cout<<endl;*/quickSort(b,n);/*for(int j=0;j<n;j++)cout<<b[j]<<" ";cout<<endl;*///2)一次循环判断a和b中元素是否相等,相等则输出;不等则小的值++。cout<<"无序集合a和集合b的交集是:"<<endl;if(m<=n){int i=0;int j=0;while(i<m){if(a[i]==b[j]){cout<<a[i]<<" ";++i;++j;}else if(a[i]<b[j])++i;else ++j;}//end whilecout<<endl;}//end ifreturn 0;}
转载地址:http://blog.csdn.net/laoyang360/article/details/8101143
0 0
- 求两无序不重复数组的交集
- 求两无序不重复数组的交集
- 两个无序数组求公共交集
- 349. Intersection of Two Arrays (求两个数组的交集,不包含重复元素)
- 求无序不重复正整数数列最小字串的长度
- 【恒生电子16年校招编程题】求两有序数组的交集并返回交集个数
- 两集合(数组)求交集
- 用NSPredicate求两数组交集
- 两数组求交集元素-C描述
- 求无序数组的中位数
- 求无序数组的中位数
- 求无序数组的中位数
- 求无序数组的中位数
- 求无序数组的中位数
- 两有序数组的交集
- LintCode-两数组的交集
- 求两个数组的交集
- 求两个数组的交集
- C#入门6.3——字符串的大小写转换
- 时间方法 base.js
- 注解的处理器映射器和适配器
- Linux设置其它主机别名(hosts文件)
- java如何来实现MySQL中Blob字段的存取
- 求两无序不重复数组的交集
- 51nod 1099:任务执行顺序 贪心
- poj 1364 差分约束 SPFA(栈/队列)
- HDU 3586 Information Disturbing
- QT学习日记1: 信号与槽简单用法
- redis的运用--来源于《redis设计与实现》的读书笔记,仅供自己参考
- Linux修改主机名
- 四款后起编程语言能否成功挑战Python的王者地位
- 2016年7月问题记录与总结