Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 对1000000个数进行排序找出10个最大的数---后记1
【标  题】:对1000000个数进行排序找出10个最大的数---后记1
【关键字】:1000000,10,---
【来  源】:http://blog.csdn.net/rxxi/archive/2006/06/13/795186.aspx

对1000000个数进行排序找出10个最大的数---后记1

Your Ad Here 前几天的那个问题本问题“对1000000个数进行排序找出10个最大的数”也可以用插入排序或选择排序,对于选择排序在目标数中每次选择最大的数,与前面的10个数进行交换,大约需O(10*n)的时间消耗。如下算法:
void InsertSort(long data[], long count)
{
    /*
    *    在count个数中找到最大的数,与第0个进行交换,然后再在后count-1中找到最大的,与
    *    第1个进行交换,依此类推,直到前10个数都与相应的数交换完毕,输出前10个数就行了,
    *    这就是选择排序的一部分,不过同快速排序和堆排序一样却破坏了原来的data[]。
    */
    long temp, num = 0;    // num统计运行的次数
    long i = 0, j = 0, k = 0;    // 用k纪录data的前10位数
    for (i = 0; i < 10; i++)
    {
        ++num;
        temp = data[k];    // data[k]作为监视哨
        for (j = i; j < count; j++ )
        {
            ++num;
            if (data[k] < data[j])
            {
                data[k] = data[j];
            }
        }
        data[j] = temp;    // 交换到位
        k++;    // 下一个
    }
}
用VC写Assembly代码(5) --循环的使用(一):【上一篇】
UTF-8的编码方式:【下一篇】
【相关文章】
  • windows内核初窥(二)-----系统机制
  • 用C实现C++的多态---剖析GTK的"对象" (一)
  • 用C实现C++的多态---剖析GTK的"对象" (二)
  • 连库整理-----C#中使用ADO.NET来访问数据库
  • Oracle 10g (ASM):Sample Implementation
  • solaris10 的区域技术
  • http://www.cublog.cn/u/10957/?u=http://www.cublog.
  • 非常好用的ftp客户端软件-----lftp
  • {asp.net2.0}动网新闻(DvNews 4.3.210 正式版)破解版(已经升级到.NET2.0)
  • 编码讨论---乱码问题之终极解决
  • 【随机文章】
  • CHINANET与Internet是什么关系?
  • BIND 配置
  • Feature Test Macros
  • 一段测试不用COMMAND对象来调用存储过程的ASP代码
  • 经验分享交流:常用SQL语句技法
  • 伺候大爷
  • Primitive Collision Detecting (4)
  • 逻辑卷的类型怎么会变成 “???”?
  • Remote Desktop from Windows to Linux
  • NCIE再添丁 国家数据库技术水平考试亮相
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.