查找数组中的重复元素

通过c语言自定义数组长度

能够识别出多个重复的数据,将其输出并返回下标

时间复杂度O(n^2)

使用双重循环查找,找到直接break,注意break和continue的区别

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

int main(void)
{
    int *a;
    int n;
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int)*(n));
    for(int i=0;i<n;++i)
        scanf("%d",&a[i]);
    for(int i=0;i<n-1;++i)
        for(int j=i+1;j<n;++j)
            if(a[i]==a[j])
            {
                printf("find number %d ,locate %d
",a[i],j);
                break;
            }
    /*
    for(int i=0;i<n;++i)
        printf("%d ",a[i]);
    printf("
");
    */
    system("pause");
    return 0;
}

之前在申请内存的时候直接用(int*)malloc(sizeof(n));当申请的内存超过10的时候会出现堆的溢出错误,因为申请的内存是错误的,无法容纳大于10的数组

改为(int*)malloc(sizeof(int)*(n));之后就解决了这个问题,二维数组的动态申请也是同理。

原文地址:https://www.cnblogs.com/wangtianning1223/p/11457241.html