| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1137 人关注过本帖
标题:很多很多数,怎么求最小的100个
只看楼主 加入收藏
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
结帖率:81.25%
收藏
已结贴  问题点数:1 回复次数:15 
很多很多数,怎么求最小的100个
我想到的办法是给他们排序,这是不是计算量太大呀,更好的方法是什么 谢谢
搜索更多相关主题的帖子: 计算 
2012-02-16 12:37
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
就你想的那样最好!

   唯实惟新 至诚致志
2012-02-16 12:41
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:0 
定义一个大的数组,然后再冒泡排到100,然后再输出就好啊

数学好难!
2012-02-16 12:47
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
收藏
得分:0 
回复 3楼 zxd675816777
用冒泡要全整个都排一遍吧,不能只排前100个吧
2012-02-16 12:56
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
收藏
得分:0 
那用什么排序好一些呢,我感觉选择排序好一些,找到100个就不用在找了
2012-02-16 12:58
闲出屁
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:420
专家分:612
注 册:2012-1-24
收藏
得分:0 
应该跟排序没关系啊
每个数跟你100个数序列挨个比较 如果100里有较大的数 就把较大数弄出去 留下那个较小的数

乔布斯是神 宫崎骏也是神~~ 才知道 原来士兵突击的主题曲是久石让的 久石让的音乐 真传神
2012-02-16 13:04
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
他说的是冒泡100次。多余的部分没必要排。这样的冒泡需要倒着冒。
不想开很大的数组,那么可以先对前100个数据排序,之后的数据用二分法检索插入。
还可以改造一下快排,如果前100个最小的数据不需要排序,那可以获得更快的速度。
总之,提高效率的方法就是减少不必要的排序(超过前100的部分就没必要排了)。

重剑无锋,大巧不工
2012-02-16 13:04
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 6楼 闲出屁
还是有关系的。排序的主要过程就是比较两个元素的大小。你所说的其实就是插入排序。

重剑无锋,大巧不工
2012-02-16 13:07
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
#include<stdlib.h>中有qsort()函数,快速排序,现成的!

   唯实惟新 至诚致志
2012-02-16 13:51
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
用排序就太慢了  用个最大堆就行了  详见杭电的4006
http://acm.hdu.   
程序代码:
#include <stdio.h>
#include <queue>
using namespace std;
struct Node
{
    int a;
    bool operator<(const Node &node1)const
    {return node1.a<a;}
};

int main()
{
    int n,k;
    Node t;
    char c;
    priority_queue<Node> pq;
    while(EOF != scanf("%d%d",&n,&k))
    {
        while(!pq.empty())pq.pop();
        getchar();       
        while(n--)
        {
            scanf("%c",&c);
            getchar();
            if('I' == c)
            {
                scanf("%d",&t.a);
                getchar();
                if(pq.size() < k)
                    pq.push(t);
                else if(t.a>(pq.top()).a)
                {
                    pq.pop();
                    pq.push(t);
                }
            }
            else if('Q' == c)
            {
                printf("%d\n",(pq.top()).a);
            }
        }
    }
    return 0;
}



                                         
===========深入<----------------->浅出============
2012-02-16 14:01
快速回复:很多很多数,怎么求最小的100个
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018626 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved