程序员“修炼成神”的必经之路——数据结构(第1章 概论)
Posted 猿力满满
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员“修炼成神”的必经之路——数据结构(第1章 概论)相关的知识,希望对你有一定的参考价值。
目录
前言
著名的瑞士计算机科学家沃思(N.Wirth)教授曾提出:算法+数据结构=程序。可见作为一名程序员要想写出一个“好”的程序、开发出一种结构合理、性能良好的软件,仅仅掌握一门编程语言是不够的,还必须掌握算法与数据结构。换句话说,要想成为大神级程序员,数据结构就是“必修功法”。
一、基本概念和常用术语
1.基本概念
数据(data)是描述客观事物的数、字符以及能输入计算机中并被计算机处理的符号的集合。
数据元素(data element)是数据的基本单位。
数据对象(data object)是具有相同性质的数据元素的集合,是数据的一个子集。
2.数据结构包含的内容
一般包括以下三个方面的内容:
1)数据的逻辑结构
数据的逻辑结构可分为线性结构和非线性结构。
线性结构特征:数据元素(结点)之间存在着一对一的关系,且结构中仅有一个开始结点和一个终端结点,其余结点都是仅有一个直接前趋和一个直接后继。
非线性结构特征:数据元素之间存在着一对多或多对多的关系,即一个结点可能有多个直接前趋和多个直接后继。
2)数据的存储结构(物理结构)
数据的存储结构可以用以下四种基本的存储方法实现:
① 顺序存储方法
② 链接存储方法
③ 索引存储方法
④ 散列存储方法
3)数据的运算
常用的运算有:检索、插入、删除、更新、排序等。其实也就是增删改查这几个操作。
二、算法的描述和分析
1.算法描述
算法是由若干条指令组成的有穷序列,其中每条指令表示一个或多个操作。通俗地说,一个算法就是一种解题的方法。
算法必须满足的五个准则:
- 输入。算法开始前必须给算法中用到的变量初始化,一个算法的输入可以包含零个或多个数据。
- 输出。算法至少有一个或多个输出。
- 有穷性。算法必须在执行有限步后结束。
- 确定性。算法中每一条指令的含义都必须明确,无二义性。
- 可行性。算法中描述的操作都可以通过有限次的基本运算来实现。
2.算法分析
如何来评价算法的优劣呢?应主要考虑如下几点:
(1)执行算法所耗费的时间,即时间复杂性。
(2)执行算法所耗费的存储空间,主要是辅助空间,即空间复杂性。
(3)算法应易于理解、易于编程,易于调试等,即可读性和可操作性。
ps:博主创作不易,如果喜欢就点个赞吧!ღ( ´・ᴗ・` )比心
以上是关于程序员“修炼成神”的必经之路——数据结构(第1章 概论)的主要内容,如果未能解决你的问题,请参考以下文章
程序员“修炼成神”的必经之路——数据结构(第4章 多维数组和广义表)
[架构之路-24]:目标系统 - 系统软件 - C语言的结构与程序的工作原理 - 程序控制函数调用栈函数调用性能优化
[架构之路-23]:目标系统 - 系统软件 - C语言的结构与程序的工作原理 - 数据类型与数据定义(待续)