数据结构与算法---导论

结构

广义:数据结构=数据存储+算法

狭义:数据结构=数据的存储

使用数据结构

1.程序员编程的依据

2.有效管理数据对象

3.解决处理性能问题(例如数据查询时采用有效算法)

概念:

数据

数据元素(记录数据的基本单位:数据表中的一个字段就算是数据的一个元素)

数据项()

数据对象

数据结构

 

数据结构:数据元素相互之间的关系

1.逻辑结构:反应数据元素之间的逻辑关系

存储结构:数据结构在计算机中的表示

算法:对数据的操作  

 

集合:由一个或多个确定的元素所构成的整体叫做集合。

(一维数组)

 

线性结构:如果不是第一个或者最后一个元素,每一个元素都拥有一个前驱一个后继

线性表:类型相同的元素

线性表的衍生结构

栈:操作受到限制的,只能操作栈顶,入栈出栈,lifo 后入先出

用途:解决括号匹配检查,浏览器从栈顶弹一个处理啊,或编辑器的undo功能

队列:只能从队尾入队,从队首出队,只能操作队首队尾,fifo先入先出

用途:消息队列,视频弹幕,维护打印机任务

串:字符串 连续表,需要结束标记,操作成批字符串

物理结构: 顺序表(知道表的长度),链表(双向链表,双向链表)

 

树状结构:节点之间没有回路,每两个点之间都有且只有一条路,一棵树有N-1条边,

树的遍历:

先序遍历(深度优先)

终须遍历(深度优先)

后序遍历(深度优先)

层序遍历(广度优先)

 

树的衍生 

无序树

有序树

二叉树

完全二叉树(就是叶子节点都必须在最后一层或者倒数第二层,而且必须在左边。任何一个节点都不能没有左子树却有右子树。)

满二叉树:如果一棵树的高度为 k,且拥有 2^k-1 个节点,则称之为 满二叉树。(每个节点要么必须有两棵子树,要么没有子树。)

霍夫曼树

 

图状结构:节点之间形成多个回路

 由顶点的集合(不能是空集)和变得集合组成的结构,表现的是多对多的关系

顶点,边,权(路径带数字),有向图于无向图

 

 

内存与存储结构

一般用16进制表示内存的地址

引用:对指针进行了封装(一般见于高级语言中,例如js)

内存的以原理与构造:

存储结构:链式存储 顺序存储

指针:存储地址的变量,指针不是地址

 

 

 算法:用数学描述

分类:

排序算法

查找算法

推荐算法

贪心算法:用最少的最好的办法解决当前的问题

特征:

有穷性:算法必须能在执行有限个步骤之后终止

确切性:每一步骤必须有确切的定义

输入项:有0个或多个输入,用来规定初始情况

输出项:有一个或者多个输出,没有输出的算法毫无意义

可行性:每个步骤都是可以被分解为可执行的操作步,每一个计算步都可以在有限时间内完成(也称为有效性)

算法优劣判断依据:

时间复杂度

空间复杂度

正确性

可读性

健壮性

 

十大算法:

快速排序算法:

堆排序算法

归并排序

二分查找

线性查找

深度优先

广度优先

戴克斯特拉

动态规划

贝叶斯分类算法

 

常用算法说明:

基本算法:排序与查找,分配与调度

应用算法:压缩与加密

底层实现:操作系统,通信,渲染。。。

商业算法:人工智能与商业智能,各种行业算法

 

关于排序:

n:排序元素个数

关于查找:

分块查找

散列表

顺序查找

二分查找

 

数据挖掘相关算法:

分裂与聚类

关联与因果

决策树

 

 

 

稳定的排序算法:对一组数据多次排序,排序结果均相同

 冒泡排序:稳定的排序算法,

 

分块查找:

 

压缩算法:霍夫曼树

一个字节 = 8beta

加密算法:对称加密算法,非对称加密算法

转载于:https://www.cnblogs.com/nanshine/p/7426274.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值