设T[0:n-1]是n 个元素的数组。对任一元素x,设S(x)={ i | T[i]=x}。当| S(x) |>n/2 时,称x 为T 的主元素。设计一个算法,确定T[0:n-1]是否有一个主元素。算法描述如下:a1 a2 a3 a4 … aj aj+1 … … an 首先取a1 存入m 中,计数器...
分类:
其他好文 时间:
2014-09-02 00:14:53
阅读次数:
258
本章节主要证明对包含n个元素的输入序列来说,任何比较排序在最坏情况下都要经过omega(nlgn)次比较。从而证明归并排序和堆排序是渐近最优的。同时,介绍了三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。1. 排序算法的下界在确定排序算法的下界时,借助决策树模型。决策树模型是一棵完全二叉树...
分类:
其他好文 时间:
2014-08-29 18:01:18
阅读次数:
239
原题地址:http://www.cnblogs.com/x1957/p/3373994.html题意:Given an array of integers, every element appearstwiceexcept for one. Find that single one.要求:线性时间复...
分类:
编程语言 时间:
2014-08-28 11:04:19
阅读次数:
274
本文介绍求出1~n内的所有素数的有效算法——埃拉托色尼筛法(the Sieve of Eratosthenes),估计其算法复杂度,并介绍其改进——线性时间筛法。以下内容谢绝转载。 ...
分类:
其他好文 时间:
2014-08-22 23:45:49
阅读次数:
357
在前面三节排序算法中,我们分别分析了不同策略,思想用于排序,而这些算法都是基于数据间的比较来确定顺序的。假设我不用比较,换一种思路,那么就可以达到时间复杂度为O(n)的排序算法,当然是以付出额外的空间为代价的。一、基本思想线性时间排序的算法思想:(1):在计数排序中,利用比x小或等的元素个数和的来确...
分类:
其他好文 时间:
2014-08-21 00:00:53
阅读次数:
363
经典的排序算法有十种,分别是:选择排序、插入排序、希尔排序、冒泡排序、堆排序、合并排序、快速排序、计数排序、基数排序和桶排序。
下面对这些算法分类如下:
选择排序:简单选择排序、堆排序
插入排序:直接插入排序、二分插入排序、希尔排序
快速排序:快速排序、随机化快速排序
线性时间排序:计数排序、基数排序、桶排序
其他:冒泡排序、合并排序
这些排序排序算法的时间复杂度,稳...
分类:
其他好文 时间:
2014-08-20 16:31:32
阅读次数:
185
非常难的问题,数组线性时间。属于我之前说的解法的借助辅助空间。给定两个柱子,他们之间的面积由什么确定呢?没错,他们之间的距离和他们之间最矮的那个柱子的高度。我们并不知道这个柱子在什么位置,所以仅仅能遍历,这个复杂度就上去了。那有没有一个方法避免找中间小柱子呢?先想什么情况下不用找。除非你知道枚举出两...
分类:
其他好文 时间:
2014-08-19 16:16:44
阅读次数:
176
/*
* 算法导论 第九章 中位数和顺序统计学
* 线性时间选择元素
*/
#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
KMP 算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化, 是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳 ...
分类:
其他好文 时间:
2014-08-13 14:22:16
阅读次数:
307