欢迎加入前端技术营!如果你也是前端学习者或者对前端有学习的想法,那就跟着我一起从零开始进击前端。
致力于尽可能详细且简洁的介绍前端知识、自己的捷径,也是学习路上的记录。欢迎探讨
目录
概论
一、基本概念和常用术语
二、算法的描述与分析
面试题
有位大佬说过:有编程天赋的人不是从脸上看出来的,有编程天赋的人有一个特点,那就是算法数据结构学的很明白。
因为像接口调用等其他知识大家大多都学的能达到的程度差不多,但是算法数据结构是极其考验思维的,所以开始吧
概论
先说说概念吧:是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科
算法+数据结构=程序
一、基本概念和常用术语
数据:
- 数据:描述客观事物的数字符及能输入计算机中并被处理的符号的集合
- 数据元素:数据的基本单位
- 数据项(字段、域、属性):具有独立含义的最小标识单位
- 数据对象:具有相同性质的数据元素的集合,是数据的一个子集
数据结构:分为逻辑结构和物理结构
逻辑结构:又有线性和非线性结构:
- 线性结构:元素一一对应,有一个开始和一个终端结点其余结点都仅有一个直接前趋和直接后继
- 非线性结构: 一对多,多对多的关系,有树形、图形、网状结构
存储结构(物理结构):研究的是如何把数据元素存储到计算机的存储器中
- 顺序存储方法:
实现:逻辑上相邻的结点存储在物理位置也相邻的连续存储单元里
主要应用于线性数据结构,非线性通过某种线性化的方式也能实现 - 链式存储方法:实现:用一组不一定连续的存储单元存储逻辑上相邻的元素,元素间的逻辑关系是由附加的指针域表示的
- 索引存储方法:
实现:在存储元素信息的同时,还建立独家的索引表
索引项一般形式:关键字、地址
关键字:能唯一标识一个元素的一个或多个数据项