数据结构及算法分析(0)——引论】的更多相关文章

      引论提到算法递归的概念,递归在很多算法中都会出现.所谓递归,当一个函数用它自己来定义的时候就称为递归.     递归调用有两大要素: 基准情况. 递归调用.     并非所有的数学递归函数都能有效地由C语言的递归模拟来实现.一般来说,递归调用并非循环逻辑,它与其它的调用在处理上没什么不同,只是递归调用将反复进行直到基准情况出现.     递归调用有四大基本法则: 基准情况.如先前提到,一个正确的递归必须具有不需要递归就能求解出的基准情况.一个没有基准情况的数学递归是没有意义的,也不能…
一.为什么需要使用范型? 官方的说法是:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 说明一下:在没有范型或者不使用范型的时候,下面给出一个假设: Person类的构造器:public Person(Object o){this.o=o} 我们编码的时候实例化一个类的实例(含参数):Person  p1=new Person(…
数学知识复习是<数据结构与算法分析>的第一章引论的第二小节,之所以放在后面,是因为我对数学确实有些恐惧感.不过再怎么恐惧也是要面对的. 一.指数 基本公式: 二.对数 在计算机科学中除非有特别的声明,否则所有的对数都是以2为底的. 定义:XA=B 当且仅当logxB=A. 由该定义可以推出几个方便的等式. 定理1: logaB=logcB/logcA; A,B,C>0,A不等于1 定理2: logAB=logA+logB:A,B大于0 三.级数 最容易记忆的公式: 四.模运算 如果N整除…
现在我们将要叙述四个算法来求解早先提出的最大子序列和问题. 第一个算法,它只是穷举式地尝试所有的可能.for循环中的循环变量反映了Java中数组从0开始而不是从1开始这样一个事实.还有,本算法并不计算实际的子序列:实际的计算还要添加一些额外的代码. public static int maxSubSum1(int[] a) { int maxSum = 0; for(int i = 0;i<a.length;i++) for(int j = i;j<a.length;j++) { int th…
有几种方法估计一个程序的运行时间.前面的表是凭经验得到的(可以参考:<数据结构与算法分析>读书笔记--要分析的问题) 如果认为两个程序花费大致相同的时间,要确定哪个程序更快的最好方法很可能将它们编码并运行. 一般地,存在几种算法思想,而我们总愿意尽早除去那些不好的算法思想,因此,通常需要分析算法.不仅如此,进行分析的能力常常提供对于设计有效算法的洞察能力.一般说来,分析还能准确地确定瓶颈,这些地方值得仔细编码. 为了简化分析,我们将采纳如下的约定:不存在特定的时间单位.因此,我们抛弃一些前导的…
最简单的不相交集的实现,来自MAW的<数据结构与算法分析>. 代码: class DisjSet: def __init__(self, NumSets): self.S = [0 for i in range(NumSets+1)] def SetUnion(self, S, Root1, Root2): S[Root2] = Root1 def Find(self, X, S): if S[X] <= 0: return X else: return self.Find(S[X],…
关于函数对象,百度百科对它是这样定义的: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.又称仿函数. 听起来确实很难懂,通过搜索我找到一篇博客,作者对其是这样的描述: 如果把对象理解成指针的话,也就是说,函数对象其实就是函数指针的概念. 这是该作者通过类比法比较出来的: 我们常说java没有指针,其实java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把对象的引用与对象等同了. 在<数据结构与算…
一.简单的泛型类和接口 当指定一个泛型类时,类的声明则包括一个或多个类型参数,这些参数被放入在类名后面的一对尖括号内. 示例一: package cn.generic.example; public class GenericMemoryCell <AnyType>{ public AnyType read() { return storedValue; } public void write(AnyType x) { storedValue=x; } private AnyType stor…
转自:http://www.linuxidc.com/Linux/2014-04/99735.htm 数据结构与算法分析:C语言描述(原书第2版中文版!!!) PDF+源代码+习题答案 数据结构与算法分析:C语言描述(原书第2版)是<data structures and algorithm analysis in c>一书第2版的简体中译本.原书曾被评为20世纪顶尖的30部计算机著作之一,作者mark allen weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅…
#include "stdio.h" #include "stdlib.h" #define random(x) (rand()%x) void creat_array(int a[],int len,int max); void print_array(int a[],int n); void main(){ printf("please input two numbers as the array's length and the array's ma…