原文:求N个数的数组中第K大的数的值

方法一:将这N个数的数组,通过简单的冒泡排序法,以递减的顺序将数组排序,然后返回第K个元素。 方法二:先把前K个元素拷贝到数组b,以递减的顺序对其排序,然后,将剩下的元素逐个与数组b比较, 如果小于数组b中的第K个元素则忽略,否则将新元素放到数组b中正确的位置上,同时将数组b中的一个 元素挤出数组。当算法终止时,返回数组b中第K个元素。 代码实现: 将a剩下的元素逐个插入数组b正确的位置上: 方法 ...

2016-10-12 14:41 0 2413 推荐指数:

查看详情

个数组K小的

面试南大夏令营的同学说被问到了这个问题,我的第一反应是建小顶堆,但是据他说用的是快排的方法说是O(n)的时间复杂度, 但是后来经过我的考证,这个算法在最坏的情况下是O(n^2)的,但是使用堆在一般情况下是O(n+klogn),最坏的情况是O(nlogn) 把两种方法整理一下,我还是推荐使用小顶 ...

Wed May 18 03:51:00 CST 2016 0 4384
个数组k大的方法

个数组k大的,我第一印象是冒泡,因为只要冒泡k趟即可,第一趟冒泡第一大,第二次冒泡第二大,第k次冒泡第k大,时间复杂度为O(kn),n数组长度。但是我们都知道快速排序是对冒泡的改进,降低冒泡的递归深度,使时间复杂度降低到O(nlgn),为什么不用快排呢?那么快排的时间复杂度又是 ...

Thu Jan 03 02:23:00 CST 2013 7 18211
n的因子个数与其因子之和

方法一:朴素算法:O(n)。 方法二:约数个数定理:O(√n)。 实战例题: 题解报告:hdu 2521 反素数 Problem Description 反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x ...

Mon Sep 24 01:29:00 CST 2018 0 2721
个数的约数个数 d(n)

·方法一 ·方法二 ·时间测试 方法一:筛法 方法二:质因数分解 若A|B 则 a1<=b1,a2<=b2···an<=bn (a,b分别指正数A,B ...

Thu May 16 04:58:00 CST 2019 0 594
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM