您的位置:首页 > 其它

判定数组中是否存在重复元素

2015-03-14 12:27 344 查看
问题:数组有 n 个元素,元素取值范围为 1--n ,如何判定是否存在重复的元素?

遍历数组法:假设在第 i 的位置的数字为 j ,则通过交换数字 j 到第 j 的位置,直到所有的数字都出现在自己的位置,或者发生冲突。

#include<iostream>
using namespace std;

//判定数组中是否存在重复元素
int Find_repeat(int *a,int n)
{
int j=-1;
for(int i=0;i<n;i++)
{
j=a[i];
if(i+1 == j)
continue;
if(a[j-1]==j)
return j;
a[j-1]=a[i];
}
return 0;
}

int main()
{
int a[]={1,3,5,7,8,9,2,4,6,9};
int length_a=sizeof(a)/sizeof(a[0]);
int result=Find_repeat(a,length_a);
if(result)
cout<<"存在重复的数字,该数字为:"<<result<<endl;
else
cout<<"不存在重复的数字!!"<<endl;
system("pause");
return 0;
}
输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: