原文:求一个数组中第K小的数

面试南大夏令营的同学说被问到了这个问题,我的第一反应是建小顶堆,但是据他说用的是快排的方法说是O n 的时间复杂度, 但是后来经过我的考证,这个算法在最坏的情况下是O n 的,但是使用堆在一般情况下是O n klogn ,最坏的情况是O nlogn 把两种方法整理一下,我还是推荐使用小顶堆的方法,因为它不仅可以求第K大,还可以求前K大。。。 一。快排。借用了快排的partition思想,其实是一种 ...

2016-05-17 19:51 0 4384 推荐指数:

查看详情

一个数组k大的方法

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

Thu Jan 03 02:23:00 CST 2013 7 18211
N个数数组K大的的值

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

Wed Oct 12 22:41:00 CST 2016 0 2413
一个数组的最大k个数(java)

问题描写叙述:一个数组的最大k个数。如,{1,5,8,9,11,2,3}的最大三个数应该是,8,9,11 问题分析: 1.解法一:最直观的做法是将数组从大到小排序,然后选出当中最大的K个数。可是这种解法,复杂度是O(logn*n),可是有时候并不须要排序,用简单的选择排序 ...

Sun Jul 09 23:23:00 CST 2017 0 1519
无序数组k大/第k

根据http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html 博客中所总结的7种解法,我挑了其中的解法3和解法6进行了实现。 解法3: 利用快速排序的思想,从数组S随机找出一个元素X,把数组分为两部分Sa和Sb。Sa的元素 ...

Tue Jun 27 23:10:00 CST 2017 0 3931
有15个数按由大到顺序存放在一个数组,输入一个数,要求用折半查找法找出该数组第几个元素的值。如果该不在数组,则输出"无此"

有15个数按由大到顺序存放在一个数组,输入一个数,要求用折半查找法找出该数组第几个元素的值。如果该不在数组,则输出"无此" 【答案解析】 二分查找是一个非常高效简单的查找算法,笔试和面试中非常喜欢考察。 折半查找又叫二分查找,查找的前提是序列中元素必须有序,假设区间 ...

Mon Sep 14 23:04:00 CST 2020 0 920
有15个数按由大到顺序存放在一个数组,输入一个数,要求用折半查找法找出该数组第几个元素的值。如果该不在数组,则输出无此

有15个数按由大到顺序存放在一个数组,输入一个数,要求用折半查找法找出该数组第几个元素的值。如果该不在数组,则输出"无此"。 【答案解析】 二分查找是一个非常高效简单的查找算法,笔试和面试中非常喜欢考察。 折半查找又叫二分查找,查找的前提是序列中元素必须有序,假设区间 ...

Sat Jul 18 00:08:00 CST 2020 0 2256
有15个数按由大到顺序存放在一个数组,输入一个数,要求用折半查找法找出该数组第几个元素的值。如果该不在数组,则输出"无此"

有15个数按由大到顺序存放在一个数组,输入一个数,要求用折半查找法找出该数组第几个元素的值。如果该不在数组,则输出"无此" 【答案解析】 二分查找是一个非常高效简单的查找算法,笔试和面试中非常喜欢考察。 折半查找又叫二分查找,查找的前提是序列中元素必须有序,假设区间 ...

Mon Aug 03 18:38:00 CST 2020 0 751
#7 找出数组k

「HW面试题」 【题目】 给定一个整数数组,如何快速地求出该数组k。假如数组为[4,0,1,0,2,3],那么第三的元素是1 【题目分析】 这道题涉及整数列表排序问题,直接使用sort方法按照ASCII码排序即可 【解答】 程序源代码 ...

Tue Feb 26 07:09:00 CST 2019 0 587
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM