C语言删除数组中的重复元素(详细分析版)
//给数组删除重复的元素#include#define N 12int main(){int a[N] = { 1, 1, 2, 3, 3, 4, 6, 4, 8, 6,9,8};int i = 0, j = 0, n = N;//n个数比较n-1次printf("==========去重之前=========\n");for (i = 0; i < n; i++){printf("%d ", a[i]);}for (i = 0; i < n - 1; i++){for (j = i + 1; j < n; j++){if (a[i] == a[j]){//i位置上的数和后面的比较要是相同,依次向前挪for (int k = j; k < n - 1; k++){a[k] = a[k + 1];}--n;//把一个数字给干掉了所以n--;--j;//从j+1后面的位置一直依次向钱挪 j位置被换了新值,所以--j还要再次看//当前j位置的数与前面的重复嘛}}}printf("\n==========去重之后=========\n");for (i = 0; i < n; i++){printf("%d ", a[i]);}return 0;}
注意n--了之后,循环的访问范围就减少一个,所以被挪一个减少一个访问范围