一个关于去除数组重复元素的问题(C语言实现)

一个是关于去除一个数组中的重复数问题:

如定义一个int型数组:{1,1,3,5,6,3,6,9};

要求写一个函数得到如下数据{1,3,5,6,9},即重复出现的数只保存第一次出现的那一个数据。

源代码如下:

 

ExpandedBlockStart.gif 代码
 1  #include < stdio.h >
 2  #include < math.h >
 3  void  printArray( int  array[], int  n)
 4  { // 打印数组
 5     int  i;
 6     for (i = 0 ;i < n;i ++ )
 7    {
 8      printf( " %d, " ,array[i]);
 9    }
10  }
11  void  choiseSort( int  a[], int  n)
12  /// /对数组进行排序(选择排序)--升序 
13      int  i,j,k,temp;
14      for (i = 0 ;i < n - 1 ;i ++ )
15     {
16       k = i;
17        for (j = i + 1 ;j < n;j ++ )
18        if (a[k] > a[j]) k = j;
19        if (i != k)
20       {
21         temp = a[i];
22         a[i] = a[k];
23         a[k] = temp;
24        }
25      }
26  }  
27  void  DealArray( int  array[], int  n)
28  // 将重复元素都用(最小值-1)代替,作为重复数的标记
29     int  i,j;
30     int  f;
31    f = array[ 0 ] - 1 ;
32     for (i = 0 ;i < n;i ++ )
33    {
34      j = i + 1 ;
35       while (array[i] == array[j])
36      {
37         array[j] = f;
38         j ++ ;
39      }
40       continue ;
41    }
42  }
43  void  ResultArray( int  array[], int  n)
44  // 只打印出未被标记重复元素的元素,即为所求
45     int   * p;
46     int  f;
47    f = array[ 0 ] - 1 ;
48     for (p = array;p < array + n;p ++ )
49    {
50       if ( * p != f)
51      {
52        printf( " %d, " , * p);
53      }
54    }
55  }
56  main()
57  {
58     int  array[ 13 ] = { 7 , 1 , 12 , 11 , 8 , 1 , 1 , 3 , 5 , 6 , 3 , 6 , 9 };
59    printArray(array, 13 );
60    printf( " \n " );
61    choiseSort(array, 13 );
62    printArray(array, 13 );
63    printf( " \n " );
64    DealArray(array, 13 );
65    printArray(array, 13 );
66    printf( " \n " );
67    ResultArray(array, 13 );
68    getch();
69   }

 

 

 

转载于:https://www.cnblogs.com/cpoint/archive/2010/09/09/1821883.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值