一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。
思路:对数组里的数据先进行排序,然后比较每个元素的前一个或后一个是否相等(第一个元素除外),如果没有那么该元素中的数字只出现了一次。第一个元素由于它的前一个元素不存在,所以它和下一个元素比较就可以知道它出现的次数。
#include <stdio.h>
void sort( int a[], int num) //排序
{
int i = 0;
int j = 0;
int temp = 0;
for( i = 0; i < num -1; i++)
{
for( j = 0; j < num - 1 - i; j++)
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
void found(int a[], int num)//查找
{
int i = 0;
for(;i < num ;i++)
{
if(a[i]!= a[i+1]&& i == 0)// a[0]
{
printf("%d ",a[i]);
}
if(a[i] != a[i+1]&&a[i]!=a[i-1])
{
printf("%d ",a[i]);
}
}
}
void print(int a[], int num)
{
int i = 0;
for( ;i < num; i++ )
{
printf("%d ", a[i]);
}
printf("\n");
}
int main()
{
int a[] = {0,1, 1, 2,3,2,3,4,5,4,5,6 };
int num = sizeof(a)/sizeof(a[0]);
print(a,num);
sort(a,num);
print(a,num);
found(a,num);
return 0;
}
运行结果:


1458

被折叠的 条评论
为什么被折叠?



