最新的去重算法

从前写的那个关于去重的算法可能出现了一些问题,由于受到某些固定思想的限制,总想着去前移覆盖重复元素导致了思维受限,最近突发奇想,想到了一个很容易理解并且也很实用的算法,简单至极,看一遍就懂。

#include<iostream>
using namespace std;
#define max 100
int quchong(int *p,int n,int *a);
int quchong(int *p,int n,int *a){ //p是原来的数组,n是数组的长度,a是未进行赋值的新数组 ,返回值是新数组的长度 
	a[0]=p[0];
	int l=1;	// 先将第一个值插入,方便比较,不会出现比空的操作 
	int i,j,k;
	for(i=1;i<n;i++)	//这个循环是用来遍历外面数组的 
	{	k=0;
		for(j=0;j<l;j++)
			if(p[i]==a[j]){
				k=1;	//这里用到了一个辅助变量k来验证我们通过比较后是否发现新数组中有重复的元素 
				break;
			}
		if(k==0){
			a[l]=p[i];
			l++;	//再插入一个的同时需要对新数组的长度加一 
		}
		}
			return l;	//返回新数组的长度 
			
}
int main(){
	int a[max],b[max];
	int c,d=5;
	for(int i=0;i<5;i++)
		{
			cin>>c;
			a[i]=c;
		}
	c=quchong(a,d,b);
	for(int i=0;i<c;i++)
		cout<<b[i];
}

下面主要是用来测试的所以我随便写了一下,重要的是上面这个方法,我们采用了两个数组进行比较插入的方法,简单易懂。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值