(去重)去除数组中重复数字的算法

                                  (去重)去除数组中重复数字的算法
怀着4级英语奔溃的心情,分享这篇算法 快哭了 

VS2013 编译通过 

C++ 语言编写 

代码注释的很详细了  不废话   看代码  

int Delete_repetition(int a[], int n)
{
	int i = 0;
	int num = 0;
	int max = 0;      //数组a  中的最大数值 

	//找出数组a中的最大数值
	for (int u = 0; u < n;u++)
	{
	   if (max<a[u])
	   {
		   max = a[u];
	   }
	}
	//申请‘标志’数组
	int * flag = new int[max];
	//将标志数组置为false
	while (i<max)
	{
		flag[i] = false;
		i++;
	}
	//将出现过的数保存到对应的位置    如果a数组中有相同的数字 
	//因为保存在“标志”数组中的位置相同   所以达到了去重的作用  
	for (int j = 0; j < n;j++)
	{
		flag[a[j]] = a[j];
	}
 //筛选有效的数字  
	for (int k = 0; k <max+1;k++)
	{
		if (flag[k]!=false)
		{
			a[num] = flag[k];
			num++;
		}
	}
	//返回去重后数组的最大下标  
	return num;
}
int main()
{
	int n;
	cin >> n;
	int a[100];
	for (int i = 0; i < n;i++)
	{ 
		cin>>a[i];
	}
	int number = Delete_repetition(a, n);
	cout << number << endl;
	for (int d = 0; d <number;d++)
	{
		cout << a[d] << " ";
	}
	system("pause");
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值