zoukankan      html  css  js  c++  java
  • 题解——明明的随机数(数组去重和排序)

    #include <iostream>

    #include <cstdio>

    using namespace std;

    int n;

    int a[105];

    int b[105];

    int read()

    {

        scanf("%d",&n);

        for(int i=0;i<n;i++)//不能开一个变量大小的数组,但可以用for循环来控制使用多少空间

        {

            int x;

            scanf("%d",&x)

            a[i]=x;

        }

    }

    void fun()

    {

        sort(a,a+n);

        int sum=0;

        for(int i=0;i<n-1;i++)//去重

        {

            if(a[i]!=a[i+1])

            {

                b[sum]=a[i];

                sum++;  //计数

            }

        }

        if(a[n-2]!=a[n-1])

        {

            b[sum]=a[n-1];

            cout<<sum+1<<endl;

            for(int i=0;i<sum+1;i++)

                printf("%d ",b[i]);

        }

        else

        {

            cout<<sum<<endl;

            for(int i=0;i<sum;i++)

                printf("%d ",b[i]);

        }

       

    }

    int main()

    {

        read();

        fun();

        return 0;

    }

    另外一种算法是:再开一个新的数组b,每次从a数组中往b数组中拿元素时,都检查一遍b数组中是不是已经有了这个元素,如果已经有了,那么就不放进去了。但是这样的算法的复杂度为O(n^2),明显没有上述算法时间复杂度低。

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    Struts22222
    Struts2
    Java事务的概念
    Java设计模式之单例模式
    Spring的大框架
    mybatis大框架
    springmvc和spring的区别
    JavaScript-原型&原型链&原型继承&组合函数
    美丽的CSS图形和HTML5
    易买网项目的总实现超级详解
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13500752.html
Copyright © 2011-2022 走看看