给定一个整数X和整数A0,A1,…,AN-1,后者已经预先排序并在内存中,求下标i使得Ai = X , 如果X不在数据中则返回i = -1 。明显的解法是从左往右扫描,花费线性时间。但是这个算法没有用到该表已经排序这个事实。折半检索(binary search,二分法检索)策略:/** * Perf...
分类:
其他好文 时间:
2014-07-16 23:25:47
阅读次数:
233
之前我们介绍了几种O(nlgn)的排序算法:快速排序、合并排序和堆排序,本节我们介绍基于比较的排序算法的下界以及几个线性时间的排序算法——计数排序、基数排序、桶排序。...
分类:
其他好文 时间:
2014-07-08 14:10:28
阅读次数:
243
线性时间选择
题目:给定n个元素和一个整数k,要求用O(n)时间找出这n个元素中第k小元素。
import java.util.Scanner;
public class Main {
static int kmin;// 第k小的数
static int knum;// 第k个数
public static void main(String[] args) {
Scanne...
分类:
其他好文 时间:
2014-06-27 08:37:19
阅读次数:
182
对任一容器C,代码if (c.size()
== 0)本质上与if (c.empty())是等价的。既然如此,为什么要偏向于某一种形式呢,尤其是考虑到empty()通常被实现为内联函数,并且它所做的仅仅是返回size()是否为0。
理由很简单:empty()对所有的标准容器都是常数时间操作,而对一些list实现,size()耗费线性时间。
原因:在所有的标准容器中,只有l...
分类:
其他好文 时间:
2014-06-26 08:10:47
阅读次数:
266
1.欧拉筛法在线性时间内求素数以及欧拉函数代码: 1 procedure get; 2 var i,j,k:longint; 3 begin 4 tot:=0; 5 fillchar(check,sizeof(check),false); 6 for i:=2 to n do 7 be...
分类:
其他好文 时间:
2014-06-25 22:11:51
阅读次数:
574
原理很简单题解我就不自己写了……做这题的时候,懂得了一个非常重要的转化:求(x, y) = k, 1 <= x, y <= n的对数等于求(x, y) = 1, 1 <= x, y <= n/k的对数!所以,枚举每个质数p(线性筛素数的方法见:线性时间内筛素数和欧拉函数),然后求(x, y) = 1...
分类:
其他好文 时间:
2014-06-22 23:44:49
阅读次数:
235
package chap08_Linear_Time_Sort;import static
org.junit.Assert.*;import java.util.Arrays;import org.junit.Test;public class
CopyOfSortAlgorithms { /**...
分类:
其他好文 时间:
2014-06-12 20:32:16
阅读次数:
231
package chap09_Medians_and_Order_Statistics;import
static org.junit.Assert.*;import java.util.Random;import org.junit.Test;public
class SearchAlorithm...
分类:
其他好文 时间:
2014-06-12 17:26:37
阅读次数:
316