O(n)时间复杂度找到数组中任意一个重复元素

解决思路

用计数排序的思想排序,直到发现重复的结束。
关于计数排序请看:计数排序

代码

#include
/*检查数组中重复的元素,并输出,数组里面的整数大小不超过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

你可能感兴趣的:(算法学习笔记)