前面我们学习二叉搜索树的时候发如今一些情况下其高度不是非常均匀,甚至有时候会退化成一条长链,所以我们引用一些”平衡”的二叉搜索树。红黑树就是一种”平衡”的二叉搜索树,它通过在每一个结点附加颜色位和路径上的一些约束条件能够保证在最坏的情况下基本动态集合操作的时间复杂度为O(nlgn)....
分类:
编程语言 时间:
2016-01-03 22:11:15
阅读次数:
333
一、在归并排序中对小数组采用插入排序(放在上一篇里了);二、冒泡排序冒泡排序效率几乎是所有排序里最低的,但却很流行,就是因为它的变成复杂度也是最低的。大多数时候,效率还不及插入排序,其实冒泡排序、插入排序、选择排序基本上效果是差不多的(这个效果不是功能。。功能上讲肯定差不多啊都是排序),只是过程略有...
分类:
编程语言 时间:
2016-01-02 18:23:54
阅读次数:
291
哈希表,又名散列表。hashtable。。。云云,看似非常高大上,事实上只是是直接寻址的延伸而已。直接寻址为何物,看一个数组:a[10],那么取当中一个元素a[1],这就是直接寻址,直接去这个a+1的地址上,就找到了这个数值,时间复杂度为O(1)。而哈希表的目的就是要让查找的时间复杂度尽量往...
分类:
编程语言 时间:
2016-01-02 14:06:45
阅读次数:
198
我们的算法导论:(中文版下载链接)目录(Table of Contents)前言(Preface)第一部分(Part I) 基础(Foundations)第一章 计算中算法的角色(The Role of Algorithms in Computing)第二章 开始(Getting Started)第...
分类:
编程语言 时间:
2015-12-31 01:39:47
阅读次数:
316
Monte Carlo algorithm will return an answer that is not necessarilycorrect within a reasonable amount of time.Las Vegas algorithm may take infinite ti...
分类:
编程语言 时间:
2015-12-31 00:10:25
阅读次数:
614
随机化算法(2) — 数值概率算法接着上一篇:随机化算法(1) — 随机数在这章开篇推荐下chinazhangjie总结的随机算法,因为咱两看的是同一本书,所以大家也可以去参考下他的,总结的很不错。http://www.cnblogs.com/chinazhangjie/archive/2010/1...
分类:
编程语言 时间:
2015-12-31 00:06:42
阅读次数:
285
随机化算法(3) — 舍伍德(Sherwood)算法已出连载:1.《随机化算法(1) — 随机数》2.《随机化算法(2) — 数值概率算法》正文:这一章怎么说呢,我个人感觉不好理解,在网上查了一些资料,没发现有具体对舍伍德算法的介绍。迄今为止看的最全面的就是王晓东的《计算机算法设计与分析》里讲的了。...
分类:
编程语言 时间:
2015-12-31 00:00:38
阅读次数:
548
设有n=2k个选手参加比赛,要求设计一个满足一下要求的比赛日程表:(1)每个选手必须与其他的n-1个选手个比赛一次;(2)每个选手每天只能赛一次 。按此要求可以把比赛日程表设计成一个n行n-1列的二维表,其中第i行第j列表示第i个选手在 第j天比赛的选手。代码:(分治策略) 1 #include 2...
分类:
编程语言 时间:
2015-12-30 23:48:14
阅读次数:
291
思路来自算法导论,将数组平分为左右两个子数组,那么最大子数组可能在左边的子数组中,也有可能在右边的子数组中,还有可能跨过中间的元素,只有这三种情况。对于前两种情况,可以使用递归求解,对于第三种情况,可以做到用线性时间复杂度的函数来求解,详见代码。#include #include using nam...
分类:
编程语言 时间:
2015-12-27 17:53:44
阅读次数:
191
《算法导论》中有一节讲的是“(比较)排序算法时间的下界”,本文将论述同一个问题,思路略有差异。本文将从信息熵的角度论述排序算法时间复杂度的下界。若本文论述过程中有错误或是不足,还请各位指正。1. 问题归约 排序,涉及到被排序的序列和排序的方法。(比较)排序算法时间的下界对被排序的序列和排序方法做了以...
分类:
编程语言 时间:
2015-12-22 19:32:03
阅读次数:
219