您的位置:首页 > 编程语言 > C语言/C++

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

2010-09-09 01:15 741 查看
一个是关于去除一个数组中的重复数问题:

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

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

源代码如下:

代码 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 }
}
void choiseSort(int a[],int n)
{ ////对数组进行排序(选择排序)--升序
int i,j,k,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j]) k=j;
if(i!=k)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
void DealArray(int array[],int n)
{ //将重复元素都用(最小值-1)代替,作为重复数的标记
int i,j;
int f;
f=array[0]-1;
for(i=0;i<n;i++)
{
j=i+1;
while(array[i]==array[j])
{
array[j]=f;
j++;
}
continue;
}
}
void ResultArray(int array[],int n)
{ //只打印出未被标记重复元素的元素,即为所求
int *p;
int f;
f=array[0]-1;
for(p=array;p<array+n;p++)
{
if(*p!=f)
{
printf("%d,",*p);
}
}
}
main()
{
int array[13]={7,1,12,11,8,1,1,3,5,6,3,6,9};
printArray(array,13);
printf("\n");
choiseSort(array,13);
printArray(array,13);
printf("\n");
DealArray(array,13);
printArray(array,13);
printf("\n");
ResultArray(array,13);
getch();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐