对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
  • 1870

N个数中找出最大的K个数

题目描述: 有很多个(N个)无序的数,我们姑且假定它们各不相等,怎么选出其中最大的若干个(k个)数呢? 1.N=100, K = 10的时候怎么处理? 2. N=1000, K = 100呢? ...

从一亿个数中找出最大的一万个数

问题定义:         从一亿个数中找出最大的一万个数 不假思索:         拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万...
  • lalor
  • lalor
  • 2012-03-19 13:18
  • 8357

100w个数中找出最大的前K个数

100w个数中找出最大的前K个数这个题是堆应用。 首先100万个数大约占4M内存,可以加载到内存中。我们可以采用排序解决这个问题,比如堆排序、快排等,但排序不是最优解。我们可以利用最小堆来解决这个问题...

N个数里面找出最大的k个数

题目:给出N个无序的数,然后找出其中最大的k个数 解题思路:          首先测试数据有可能会有一亿个数,数据量特别的大,数据库不可能存储这么多的数据。如果直接sort排序,NlogN时间复...

从一亿个数中找出最大的一万个数

问题定义:         从一亿个数中找出最大的一万个数 不假思索:         拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找...

算法导论9.3-8 找出已排序的2个数组X[1..n]和Y[1..n]的共2n个数的中位数

//O(nlgn)找sorted的X[1..n]和Y[1..n]的共2n个数的中位数 //先排序,再找第n大的数(下中位数) #include #include #include using name...

02_对N个长度最长可达到1000的数进行排序、对给定的一个字符串,找出有重复的字符,并给出其位置、输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序

1.题目描述: 对N个长度最长可达到1000的数进行排序。 输入: 输入第一行为一个整数N,(1 接下来的N行每行有一个数,数的长度范围为1 每个数都是一个正数,并且保证不包含前缀零。 输出: 可能有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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