栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

算法笔记12:数组去重

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法笔记12:数组去重

#include 
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a[n+1];//放置索引越界,数组大一些
    int tmp[n+1];// 定义一个和a相同大小的数组,存放去重后的数
    for(int i=0;i>a[i];//依次输入数组a
    int m = 0; // 记录当前tmp到底存了多少个元素
    for (int k = 0; k < n; ++k)
    {
        int j = 0;//放外面的作用是下面if要用
        for (; j < m; j++)//可以省略j=0
        {
            if (a[k] == tmp[j])//拿a[i]依次与tmp里的元素对比
                break; // 找到相同的了就break
        }
        if (j == m)//这个意思是数组b内的数据与当前位置的a数组里面的数据不一样
        { // 没有找到一个相同的,把a中此元素放入tmp里
            tmp[m] = a[k];
            m++;
        }
    }
    for (int ii = 0; ii < m; ii++)
    {
        cout << tmp[ii] << " ";//输出
    }
    return 0;
}

        数组去重,temp数组负责保存去重后的数据,外循环k用来移动未去重前的a[]数组下标,内循环j用来遍历temp数组,与a数组进行对比。j的限制就是temp当前有的元素。break是跳过当前的j循环,如果没有相同的就把a元素放入temp中

还有一种

#include
#include //算法头文件,sort包含在内
using namespace std;

int main()
{
    int n;
    cin>>n;
    int a[n+1];
    for(int i=0;i>a[i];
    sort( a, a + n);  // 排序
    int m=unique(a, a +n) - a;//去重复
    for (int i = 0; i < m; i++)
        cout << a[i] << " ";//输出
    return 0;
}

        利用C++自带的排序和取重函数sort和unique,#include //算法头文件

        unique是STL中的函数,需要#include

        unique的作用是“去掉”容器中相邻元素的重复元素,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址

int num[10]={1,1,2,2,2,3,4,5,5,5};

int ans=unique(num,num+10)-num;

        这时,返回的ans是5,而num中前5项就是1,2,3,4,5,一般使用前需要对容器进行排序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号