解决思路
用计数排序的思想排序,直到发现重复的结束。
关于计数排序请看:计数排序
代码
#include<stdio.h>
/*检查数组中重复的元素,并输出,数组里面的整数大小不超过n-1,n是数组规模
采用交换下标的方式,时间复杂度为n*/
void exchange(int *a,int j,int i)
{
int ex;
ex=a[i];
a[i]=a[j];
a[j]=ex;
return;
}
int main()
{
int a[10]={1,2,3,5,6,4,1,2,2,5};
int n=10;
int i;
for(i=0;i<n;i++)
{
if(a[i]==i)
continue;
while(1)
{
if(a[i]==a[a[i]])
{
printf("%d",a[i]);
return 0;
}
else
exchange(a,i,a[i]);
if(a[i]==i)
{
break;
}
}
}
}