您的位置:首页 > 其它

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

2016-12-17 16:03 381 查看
                                  (去重)去除数组中重复数字的算法
怀着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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐