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语言数组去重最简单的方法
评论