zoukankan      html  css  js  c++  java
  • 桶排序 附带set集合!!!!

    题目描述

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了NNN个111到100010001000之间的随机整数(N≤100)(N≤100)(N100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

    输入格式

    输入有两行,第111行为111个正整数,表示所生成的随机数的个数NNN

    222行有NNN个用空格隔开的正整数,为所产生的随机数。

    输出格式

    输出也是两行,第111行为111个正整数MMM,表示不相同的随机数的个数。

    222行为MMM个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

    输入输出样例

    输入 #1
    10
    20 40 32 67 40 20 89 300 400 15
    
    输出 #1
    8
    15 20 32 40 67 89 300 400
    

    说明/提示

    NOIP 2006 普及组 第一题

    任务:完成去重和排序两个操作!两个解法------set集合和桶排序

    做法一:set集合

    set,顾名思义,就是数学上的集合——每个元素最多只出现一次,并且set中的元素已经从小到大排好序。

    头文件:#include < set > //用bits的童鞋请忽略

    常用操作

    begin()    返回set容器的第一个元素的 地址

    end()      返回set容器的最后一个元素 **地址 **

    clear()    删除set容器中的所有的元素

    empty()     判断set容器是否为空

    max_size()   返回set容器可能包含的元素最大个数

    size()      返回当前set容器中的元素个数

    erase(it) 删除迭代器指针it处元素

    insert(a) 插入某个元素

    #include<bits/stdc++.h>
    using namespace std;
    set<int>s;
    int a[105];
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
            s.insert(a[i]);
        }
        cout<<s.size()<<endl;
        for(set<int>::iterator it=s.begin();it!=s.end();it++){
            cout<<*it<<" ";
        }
        return 0;
     }

    做法二:桶排序     相当于 一个标志数组   这个要小心空间复杂度吧!!!!!

    #include<iostream>
    using namespace std;
    int main(){
        int n,x;
        cin>>n;
        int sum(0),bus[1002]={0};
        for(int i=1;i<=n;i++){
            cin>>x;
            if(bus[x])  //如果这个数已经出现过了,那么跳过
                continue;
            bus[x]++;  //如果没有出现,把数据放在桶里,并让总数居++
            sum++;
        }
        cout<<sum<<endl;
        for(int i=1;i<=1000;i++)
            if(bus[i])
                cout<<i<<' ';
        cout<<endl;
        return 0;
    }
  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/wtx2333/p/13885368.html
Copyright © 2011-2022 走看看