如何样算出一个整形数组初始化中的不同的元素的个数

5129人阅读
算法/数据结构(5)
C语言(18)
C/C++(23)
一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
bool IsDuplicateNumber(int *array, int n)
if(array==NULL)
for(i=0;i&n;i++)
while(array[i]!=i)
if(array[array[i]]==array[i])
temp=array[array[i]];
array[array[i]]=array[i];
把每个数放到自己对应序号的位置上,如果其他位置上有和自己对应序号相同的数,那么即为有重复的数值。
当没有重复数值出现时,可以看做一种特殊的排序。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:81087次
积分:1110
积分:1110
排名:千里之外
原创:32篇
评论:13条
(2)(1)(10)(7)(6)(8)查看: 12271|回复: 12|关注: 0
matlab里有没有计算两个数组不同元素个数的函数?
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
两个数组大小相同,要求他们中不同元素的个数,谢谢!
[ 本帖最后由 mooni 于
21:19 编辑 ]
<h1 style="color:#8 麦片财富积分
关注者: 2
a = randi(30,1,10);
b = randi(30,1,10);
length(a) + length(b) - 2*length(intersect(a,b)); %不同元素的个数
<h1 style="color:# 麦片财富积分
关注者: 1
貌似没有能找到相应不同元素的函数
自己编程解决,难度也不大
[ 本帖最后由 achillesccj 于
21:32 编辑 ]
<h1 style="color:# 麦片财富积分
关注者: 5
回复 1# yangqingqing 的帖子
试试这个:
a=magic(5)
aa=unique(a);
bb=unique(b);
cc=unique([aa,bb]);
dd=((2*length(a(:)))-length(cc))
ee=length(a(:))-dd
<h1 style="color:# 麦片财富积分
回复 2# meatbird 的帖子
这个貌似不对呀
<h1 style="color:# 麦片财富积分
回复 3# achillesccj 的帖子
主要是速度问题,如果两个矩阵都比较大的话,感觉用矩阵运算matlab比较快一点,而一个一个地比较不知道matlab能不能很好地优化
<h1 style="color:# 麦片财富积分
回复 4# TTT_IOU 的帖子
可能大家理解有误,我想说的是找index相同而value不同的元素的个数
<h1 style="color:# 麦片财富积分
直接的,满足你要求的函数指令没有。
但是用程序编的话,对于维数不多的矩阵,不是很难。
<h1 style="color:# 麦片财富积分
例如10个数组成的数组,循环对应相减,然后统计0的个数,就是相同元素的个数,再用维数一减,就可以达到你的需求了。
<h1 style="color:# 麦片财富积分
前提是你矩阵里的元素是否存在相同的数,这个需要考虑一下
站长推荐 /3
使用MATLAB和Simulink进行软件无线电设计
Powered by

我要回帖

更多关于 2个数组 找出不同元素 的文章

 

随机推荐