3 kth3.1 Description给定 n 个不超过 10^9 的正整数,请线性时间选择算法 (linear select)求其中的第 k 大值。3.2 Input第一行两个整数 n,k。 第二行 n 个整数,表示题目中的那 n 个正整数。3.3 Output一行,表示答案。3.4 Sampl ...
分类:
其他好文 时间:
2016-08-06 21:56:12
阅读次数:
386
问题描述:给定n个整数,求其中第k小的数。 分析:显然,对所有的数据进行排序,即很容易找到第k小的数。但是排序的时间复杂度较高,很难达到线性时间,哈希排序可以实现,但是需要另外的辅助空间。 这里我提供了一种方法,可以在O(n)线性时间内解决Top k问题。关于时间复杂度的证明,不再解释,读者可以查阅 ...
分类:
编程语言 时间:
2016-04-25 19:19:50
阅读次数:
506
快速排序算法其实只做了两件事:寻找分割点(pivot)和交换数据。 ????所谓寻找分割点,既找到一个预计会在中间位置附近的点,当然尽量越接近中点越好。 ????所谓交换数据,就是把比这个分割点小...
分类:
编程语言 时间:
2015-09-01 01:54:12
阅读次数:
641
线性时间选择问题,实际上是随机快速排序算法的一个引申,ie,通过对随机快速排序算法的小小改动就可以实现。算法依然参考算法导论中的相关内容,需要注意的是,
代码中 的id 是指 所要 找的量在 现有区间 【low, high】中的位置, 因而,需要涉及 一定转化。 ps: mid - low + 1 表示 我们划分出来的第一个区间的长度大小。源代码如下:// ====================...
分类:
编程语言 时间:
2015-06-06 22:10:26
阅读次数:
282
算法理论1. 算法的几个特征是什么。2. 算法复杂性的定义。大O、θ、、小o分别表示的含义。3. 递归算法的定义、递归算法的两要素。4.分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)。5. 动态规划算法解题框架,动态规划算法的两个要素是什么?备忘...
分类:
编程语言 时间:
2015-04-29 11:27:25
阅读次数:
228
一、实验目的:熟悉掌握分治算法设计技术。二、实验要求:1、按教材所授内容要求,完成“线性时间选择问题”算法。得到一个完整正确的程序。2、问题规模:不少于20003、输出最终结果。三、实验设备:PC机一台四、问题描述:运用分治法的原理,对随机生成的数进行查找,找出其中第K大小的数,找出之后输出所找到的...
分类:
编程语言 时间:
2014-11-15 21:37:28
阅读次数:
629
/*
* 算法导论 第九章 中位数和顺序统计学
* 线性时间选择元素
*/
#include
#include
using namespace std;
int minimum(int *arr, int len);
int randomizedSelect(int *arr, int p, int r, int i);
int randomizedPartition(int *ar...
分类:
其他好文 时间:
2014-08-18 18:32:42
阅读次数:
208
从数组array中找出第k小的元素,即经典的“线性时间选择”问题...
分类:
其他好文 时间:
2014-08-17 21:26:12
阅读次数:
276
本文介绍从无序数组中选择最大值和最小值的最优算法。进而介绍采用快速排序思想的 RANDOMIZED-SELECT 选择算法来查找给定位置 i 的值,或获取中位数(median)。快速排序会递归地处理划分的两边,而 RANDOMIZED-SELECT 则只处理一边。所以快速排序的期望运行时间是 Θ(n...
分类:
其他好文 时间:
2014-07-24 04:58:28
阅读次数:
355