数据结构(一)——基本概念

本人是看小甲鱼的数据结构来学习数据结构的。所以主要内容都是来自于小甲鱼。

  • 数据结构分类
    数据结构分为逻辑结构和物理结构。
    逻辑结构分为:集合(无序)、线性(一对一)、树形(一对多)、图形(多对多)。
    物理结构分为:顺序结构(逻辑关系、物理关系统一)、链式结构(不统一)、索引结构、散列结构。
    索引结构:在存储结点信息时,建立一个附加的索引表,每一项是索引项,一般形式是:(关键字,地址),关键字是唯一标识一个结点信息的数据项。(就像Android里的那种界面传递数据的,key—value)。若每个结点都有各自的索引项,为稠密索引(索引项的地址指出结点地址)。若一组结点在索引表只对应一个索引项(稀疏索引),则索引项地址指向这些结点的起始地址。
    散列结构(哈希结构):是根据结点的关键字计算出结点的物理地址,关键在于通过关键字作为自变量,建立一个函数关系。在得到的函数值作为存储地址,放置结点。
  • 算法特征:
    输入(n>=0)、输出(n>=1)、有穷性、确定性、可行性。
    有穷性:重点在于时间上不能无限循环,必须在有限时间完成。
    确定性:
    每个步骤都有确定含义,不会出现二义性;
    算法在一定条件下只有一条执行路径,相同的输入只有唯一输出;
    算法的每个步骤都应该被精确定义而无歧义。
    可行性:每一步都是可行的,即每一步都能通过执行有限次数完成。
  • 算法设计的要求:
    正确性:无语法错误、合法输入有合法输出;
    健壮性:非法输入时,有健壮的处理;
    可读性:方便人们进行阅读交流;
    执行时间效率高:对于同一问题,尽量采用执行时间短的算法;
    低存储容量:执行算法所需的辅助空间少。
  • 算法分析
    现在主要是用算法的执行时间作为主要衡量的标志。粗略认为,算法中某语句执行的次数(语句的执行频度),作为该条语句算法时间的量度。整理算法中的各条语句,最大的那条语句的执行次数,即为该段算法的最大执行次数。
    如:
    A: { x++; s+= x; } 执行次数为1
    B: for(i = 1;i<=n;i++){ 执行次数为n+1(i++执行为n+1次)
    x++; s+= x; 执行次数为n
    }
    用O(f(n))来表示。f(n)即执行最多次的那条代码的最高阶的,无系数的函数表达,如n、n^2 n^3之类,不考虑其他项了。即
    T(n)称为算法的时间复杂度, T(n)= O(f(n))。
    O(1)<O(log2n)<O(n)<O(n*log2n)<O(n2)<O(n3)<O(2^n)
    注意,T(n)只是定性计算时间复杂度。定量计算的话,需要把所有语句的执行时间都加上,最后才知道的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值