欧几里得旅行商问题 是对平面上给定的n个点确定一条连接各点的最短闭合旅程的问题。图a给出了7个点问题的解,这个问题的一般形式是NP完全的,故其解需要多于多项式的时间。 J.K.Bentley建议通过只考虑双调旅程来简化问题,这种旅程即为从最左点开始,严格从左到最右点,再严格地从最右点回到最左点...
分类:
编程语言 时间:
2015-03-17 23:22:30
阅读次数:
1208
优先队列(priority queue)是一种用来维护由一组元素构成的集合S的数据结构,其中的每一个元素都有一个相关的值,称为关键字(key)。一个最大优先队列支持一下操作:
INSERT(S, x):把元素x插入集合S中。
MAXIMUM(S):返回S中具有最大关键字的集合。
EXTRACT-MAX(S):去掉并返回S中的具有最大关键字的元素。
INCREASE-KEY(...
分类:
编程语言 时间:
2015-03-17 21:52:58
阅读次数:
211
class Graph: def __init__(self): self.V = []class Vertex: def __init__(self, x): self.key = x self.color = 'white' s...
分类:
编程语言 时间:
2015-03-17 17:37:35
阅读次数:
182
排序 堆的实现和利用堆来排序排序 堆的实现和利用堆来排序Table of Contents一些基本的定义heapy:调整堆build:建堆insert:插入新的元素removetop:取出堆顶现在来使用堆来排序,只要每次都 removetop 就行了堆是最有趣的数据结构,看过《算法导论》的都会很容易...
分类:
编程语言 时间:
2015-03-17 00:34:16
阅读次数:
167
动态规划通常用于解决最优化问题,在这类问题中,通过做出一组选择来达到最优解。在做出每个选择的同时,通常会生成与原问题形式相同的子问题。当多于一个选择子集都生成相同的子问题时,动态规划技术通常就会很有效,其关键技术就是对每个这样的子问题都保存其解,当其重复出现时即可避免重复求解。钢条切割问题Serli...
分类:
编程语言 时间:
2015-03-17 00:31:51
阅读次数:
265
class Graph: def __init__(self): self.V = []class Vertex: def __init__(self, x): self.key = x self.color = 'white' s...
分类:
编程语言 时间:
2015-03-17 00:28:51
阅读次数:
295
1.直接插入排序
《算法导论》P10,《数据结构》P265
向已经排好序的数组a[1..j-1]插入a[j],进行一趟循环遍历。插入排序的基本操作是在一个有序表进行查找和插入。每一趟插入排序从后往前进行比较,便于数组中元素的向后移动。
空间复杂度:O(1)(当使用swap交换时,可实现原址)
时间复杂度:(n^2)/4
即O(n^2)
2.拓展
1)折半查找排...
分类:
编程语言 时间:
2015-03-16 16:29:20
阅读次数:
204
插入排序的工作机理和打牌时,整理手中的排做法差不多。在开始摸牌的是,我们的左手是空的,排名朝下放在桌上,接着,一次从桌上摸一张牌,并将它插入左手排的正确位置上。为了找到这张牌的正确位置,要将他和手中的没一张哦从右到左进行比较,无论什么时候,左手中的牌都是排好序的。(出自:算法导论)
例如:5,4,6,2,7,3,4,1
5—>4,5—>4,5,6—>2,4,5,6—>2,4,5,6,7—->2,...
分类:
编程语言 时间:
2015-03-16 12:56:06
阅读次数:
139
直接寻址方式:class HashTable: def __init__(self, length): self.T = [None for i in range(length)]class Data: def __init__(self, key, satelite_da...
分类:
编程语言 时间:
2015-03-16 12:43:10
阅读次数:
176
为了与大家取得“共同的语言”,下面对一些概念和术语赋予确定的含义。
1、数据(data):对客观事物的符号表示,在计算科学中指所有能输入到计算机中并被计算机程序处理的符号总称。
2、数据元素(data element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项(data item)组成,数据项是数据不可分割的最小单位。
3、数据对...
分类:
编程语言 时间:
2015-03-15 13:58:31
阅读次数:
202