摘要: 线性表---List,零个或多个数据元素的有限序列.首先它是一个序列.也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继. 当线性表元素的个数n(n>=0)定义为线性表的长度时,如果n=0,则说明该线性表是个空表. 线性表的抽象数据类型定义如下:View Code 1 ADT 线性表(List) 2 Data 3 线性表的数据对象集合为{a1,a2,....an},每个元素的类型均为DataType.其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接... 阅读全文
posted @ 2011-08-31 17:09 Jeallyn 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 是时候开始介绍算法的时间复杂度了,不过在这开始之前,我们需要了解一些额外的知识,那就是函数的渐近增长.先来说说它的概念:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,就说f(n)的增长渐近快于g(n). 这里不详细说这个概念,想要了解的朋友们可以去找找数学书,我数学学得不太好,所以,呵呵.....再这里我们需要知道的是通过数学中的这么一个概念,我们能得出一个结论:判断一个算法的效率时,函数中的常数和其他次项常常可以忽略,而更应关注主项(即最高阶项)的阶数. 接下来我们切入正题.那么,什么是算法的时间复杂度呢?简而言之,就是算法执 阅读全文
posted @ 2011-08-31 14:02 Jeallyn 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章中提到了衡量一个算法是不是好算法有一个标准就是时间效率问题.这里的效率说的是算法的执行时间.说到算法的执行时间,也许你的第一反应就是把算法设计出来,这样就能轻而易举的得到执行时间了,不错,有这个想法其实也很好,这就是事后统计方法,即通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低. 然而,这个方法其实远比想象中来得不切实际,试想,当你花了很长一段时间把算法设计出来,终于出来的时候却发现它的效率如此低下,应该是会崩溃的吧.何况还有很多外界因素的影响,又如何能保证这个算法可行呢? 既然事后统计行不通,那唯一能考虑的就是事前分析了。 阅读全文
posted @ 2011-08-31 13:19 Jeallyn 阅读(175) 评论(0) 推荐(0) 编辑