1. 程式人生 > >C語言找出一個數組中重複的元素

C語言找出一個數組中重複的元素

在一個數組中的數字是連續的,但是這個陣列中有一個數重複出現了一次,找出這個數。

#include <stdio.h>

int main()
{
	int i;
	int tmp=10;
	int swap=0;
	int a[10]={1,3,5,7,8,6,9,2,3,4};
	
	
	for(i=0;i<10;i++)
	{
		if(a[tmp-1]!=tmp)
		{
			swap=a[tmp-1];
			a[tmp-1]=tmp;
			tmp=swap;
		}
		else 
		{
			printf("重複的數為:%d\n",tmp);
			break;
		}
	}
	
	return 0;
	
}

方法二:
利用額外的一個數組b 來存原陣列中出現的數字的次數
當這個數第二次出現時,陣列b內對應位置會多+1。

#include <stdio.h>
int main()
{
	int i;
	int tmp=0;
	int a[5]={2,4,1,3,2};
	int count[5]={0};
	for(i=0;i<5;i++)
	{
		tmp=a[i];
		if(count[tmp-1]==1)
		{
		 printf("重複的數為:%d\n",tmp);
		 }
		 else
		 {
		  count[tmp-1]++;
		 }
	}
		
	return 0;
}