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

原创 2006年06月13日 17:29:00
前几天的那个问题本问题“对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++;    // 下一个
    }
}

对1000000个数进行排序找出10个最大的数

创建时间:2006年5月28属性:原创内容简介:快速排序,堆排序关键字:快速排序,堆排序,排序前序从某网上看到google的面试题目,要求从1000000个数中选出10个最大的数,题目好像有些挑战性,...
  • rxxi
  • rxxi
  • 2006年05月30日 16:03
  • 1967

从10万个数中找10个最大的数

对于这种题目,最普通的想法是先对这10万个数进行排序,然后再选取数组中前10个数,即为最后的答案,排序算法的时间复杂度不下于O(N lgN)。最好的方法是建立一个最小堆。 算法描述: 我们首先取1...
  • sky_100
  • sky_100
  • 2017年08月29日 11:20
  • 5085

(算法)从10000个数中找出最大的10个

从10000个整数中找出最大的10个,最好的算法是什么? 算法一:冒泡排序法   千里之行,始于足下。我们先不说最好,甚至不说好。我们只问,如何“从10000个整数中找出最大的10个”?我...
  • smh821025
  • smh821025
  • 2015年04月25日 05:02
  • 887

n个数里找出前m个数(或者 从10亿个浮点数中找出最大的1万个)

转载自:http://blog.csdn.net/winsunxu/article/details/6219376点击打开链接 引子 每年十一月各大IT公司都不约而同、争后恐后地到各大高校...
  • see__you__again
  • see__you__again
  • 2016年06月19日 20:22
  • 1141

* 问题描述:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

/*********************************************  * Copyright (c) 江西冶金职业技术学院  * All right reserves. ...
  • ArmyIT
  • ArmyIT
  • 2016年03月31日 16:45
  • 1878

10亿个数中找出最大的10000个数(top K问题)

前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。先拿10000个数建堆,然...
  • will130
  • will130
  • 2015年11月04日 11:39
  • 1552

从一个含有很多不同元素的大数组中寻找10个最大的数

第一次找工作面试的时候,面试
  • vinckyliu
  • vinckyliu
  • 2014年08月05日 00:25
  • 1151

100亿个数取出最大的10000个

题目:100亿个整数,求最大的1万个数,并说出算法的时间复杂度  算法:如果把100亿个数全部读入内存,需要100 0000 0000 * 4B 大约40G的内存,这显然是不现实的。  我们可以在内存...
  • Frimish
  • Frimish
  • 2015年10月26日 10:42
  • 1522

java 利用选择法 对10个数进行排序

题目:对10个数进行排序程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。代码:public class Prog...
  • iamdingruihaha
  • iamdingruihaha
  • 2017年07月06日 14:19
  • 1003

用冒泡法,对十个数字进行从小到大排序

#include int main() { int a[10]; int i,j,t; printf("input 10 numbers:\n"); for(i=0;i
  • weichanjuan3
  • weichanjuan3
  • 2015年04月08日 20:17
  • 794
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对1000000个数进行排序找出10个最大的数---后记1
举报原因:
原因补充:

(最多只允许输入30个字)