C语言实现数组去重的基本思路

C语言中实现数组去重的基本思路是对数组进行遍历,对于每个元素,检查其是否在之前出现过,如果未出现过,则将其添加到新的数组中。

下面是一种简单的实现方法:

#include <stdio.h>
#define MAX_SIZE 100
int main()
{
    int arr[MAX_SIZE], n, i, j, k;
    printf("Enter size of the array: ");
    scanf("%d", &n);
    printf("Enter elements in array: ");
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    // Remove duplicate elements
    for (i = 0; i < n; i++)
    {
        for (j = i + 1; j < n; j++)
        {
            if (arr[i] == arr[j])
            {
                for (k = j; k < n; k++)
                {
                    arr[k] = arr[k + 1];
                }
                n--;
                j--;
            }
        }
    }
    printf("\nArray elements after removing duplicates: ");
    for (i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

在上面的程序中,首先从用户输入中读取数组大小和元素,然后使用两个循环嵌套遍历数组,对于每个元素,检查其是否在之前出现过,如果出现过,则将其从数组中删除。删除元素的方法是将后面的元素依次向前移动一个位置,然后将数组大小减一。最后,输出去重后的数组元素。 需要注意的是,这种方法的时间复杂度为O(n^2),当数组规模很大时,效率比较低。还有一些更高效的去重算法,例如使用哈希表等数据结构实现去重。此外,如果不要求保持原来的数组顺序,可以将数组先排序,然后使用类似于上面的方法去重。更多实现方法参考:C语言数组去重最简单的方法

 
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定