数据结构与算法概述
alone52Hz
这个作者很懒,什么都没留下…
展开
-
2 谈谈算法
1.算法:求解问题的有限的步骤2.目的:提高效率(时间),降低成本(空间)3.算法特征:输入(参数or无参数print),输出(必须有输出),有穷性(有限步骤和时间),确定性,可行性(有限次执行)4.算法设计4.1同一问题可以多个算法4.2正确性无语法错误满足需求的输出满足交互性满足任何情况的输出4.3可读性:能阅读,能日后修改4.4健壮性:输入不合法可以4.5效率高和成本低原创 2017-01-07 14:46:15 · 203 阅读 · 0 评论 -
11-13 线性表(6)
1 单链表的创建是一个动态的过程1.1 头插法 按反序插入 每一次插入一个新节点时的过程是这样的在ai 与 ai+1插入ak 首先对于未插入前指针情况 ai->next=ai+1 插入时 ak-next=ai-next(此时看着是ai-next 给ak-next后他本身指针失效了) ai-next=ak(由于ai-next失效了才能赋予它新的指针) 1.2 尾插法 按顺序插入原创 2017-01-09 21:33:25 · 170 阅读 · 0 评论 -
10 线性表(5)
链式存储1.1 头指针与头结点 头结点:不存储任何xinxi 头指针:链表指向第一个结点的指针,如果有头结点,则为头结点的指针,它有标识作用,常用头指针冠以链表的名字(指针变量的名字),无论链表是否为空,头指针都不为空 存、读:取决于i的位置,当元素在第一个位置时,无需便利,最坏情况当你在在元素第n个位置时,那么你就必须遍历前面n-1个指针才能找到。因此时间复杂度为O(n) 插入和删除:原创 2017-01-08 22:14:30 · 241 阅读 · 0 评论 -
9 线性表(4)
顺序存储存、读 时间复杂度为O(1) 插、删 时间复杂度为O(n)原创 2017-01-08 20:34:34 · 241 阅读 · 0 评论 -
8 线性表(3)
1 线性表顺序和链式2 顺序封装3属性起始位置 数组长度 线性表的长度原创 2017-01-08 20:22:19 · 239 阅读 · 0 评论 -
7 线性表(2)
1 前驱和后继元素之间一对一2 operationInitList:初始化空表 ListEmpty:判读是否为空表,空true,不空false ClearList:清空表 GetElem:取出指定位置的元素 LocateElem:查找表中是否和指定元素相等 ListInsert:在指定位置插入指定元素 ListDelete:删除指定位置的元素 listLength:返回表的长度或者元素原创 2017-01-08 20:01:36 · 281 阅读 · 0 评论 -
6 线性表(1)
1 线性表零个或多个元素组成的有限序列 1.1 前驱和后继 ….ai-1,ai,ai+1…. ai的前驱是ai-1,后继ai+1,前驱和后继除了首末两个元素外,都必须有且仅有唯一前驱和唯一后继; 1.2 零个元素表示空表2 数据元素类型2.1 原子类型:不可分解的类型,如整形,浮点型,字符型; 2.2 结构类型:若干类型组合而成,如整形数组,字符数组等等 2.3抽象类型标准形式:原创 2017-01-07 21:30:45 · 194 阅读 · 0 评论 -
1 绪论
1.数据结构+算法=程序设计2.数据结构:元素与元素的关系3.结构分类3.1传统:逻辑和物理结构3.1.1逻辑:元素之间的关系3.1.2物理:逻辑结构在计算机中的存储形式3.1.1逻辑结构3.1.1.1集合结构(属于和不属于)3.1.1.2线性结构(一对一)3.1.1.3树形结构(一对多,层次,金字塔)3.1.1.4,图形结构(多对多)3.1.2物理结构:如何把数据元素及他们的逻辑结构存入存储器中,原创 2017-01-07 14:26:34 · 224 阅读 · 0 评论 -
3 时间复杂度和空间复杂度(1)
1 效率:速度,执行算法的时间短,次数少2 测试程序,测试数据规模,测试环境都会导致结果不同3 计算机上影响效率的因素3.1 算法策略,方案3.2 编译产生的代码数量(二进制)3.3 问题的输入规模3.4 机器执行指令的速度4 循环次数规模,判断次数规模,单个指令时间,计算次数规模,输入规模都是考虑,最终关注的是量级,只管最高项次数,常数可以忽略,甚至低次项也可忽略。原创 2017-01-07 19:09:53 · 300 阅读 · 0 评论 -
4 时间复杂度和空间复杂度(2)
1 时间复杂度O(f(n))执行次数T(n)关于问题规模n的函数,分析T(n)随n的变化情况确定T(n)的数量级,记为T(n)=O(f(n)),f(n)为量级(最高次数项与系数无关),且算法执行时间增长率和f(n)的增长率相同。1.1例如:计算 1 + 2 + 3 + … + n 累加算法1:输入问题规模n,循环执行了T(n)=n次,时间复杂度:O(n^1) s=0 i=1 while i<原创 2017-01-07 21:02:22 · 381 阅读 · 0 评论 -
14 线性表 (9)
C语言强大的原因指针的灵活性静态链表(顺序表数组但是仍然时链表)动态链表(单链表)静态链表的:游标,数据,下标 如何模拟动态链表呢原创 2017-01-09 21:54:35 · 174 阅读 · 0 评论