标签归档:数据结构

c语言如何判断一个算法的好坏

c语言如何判断一个算法的好坏
对于同一个问题我们可以编写不同的算法,那么选择那一种算法才是最合理呢?

我们通常会根据以下原则来判断一个算法的好坏:
(前提条件:算法必须是正确,并且满足算法的5个特性)

1 算法执行所消耗的时间,即效率问题
2 算法执行所消耗的存储空间
3 算法的可读性要强,易于编码,方便调试
4 在算法接受一些非法输入时,算法可以识别,并且给出相应的处理

通常情况下,我们会选择一个存储空间小 ,执行时间短的算法,但是现实中往往很难做到这一点,
如何我们需要节省算法的执行时间,那么需要消耗大量的存储空间(例数据库的索引技术,为了我们能够快速的查找出我们想得到的数据,需要提前在系统中存储一些关键信息)
如何我们需要节省存储,那么就需要耗费大量的算法执行时间(例 压缩文件,我们为了使文件尽可能的小,我们需要使用压缩工具对文件进行压缩操作,而压缩和解压操作 往往需要耗费计算机的执行时间)

因此我们应该根据实际情况来选择合适的算法,对进行使用的程序,应该选择运行时间短的算法,而对机器存储容量比较小,而数据量有比较大的程序,我们需要尽可能的采用算法的运行时间来弥补算法的空间不足。


在大多数情况下,我们只讨论算法的时间特性,因为随着计算机硬件的迅速发展,存储空间费用越来越低,讨论算法的空间复杂度的必要性越来越小。
算法耗费时间 =算法的所有语句执行时间之和。
每条语句执行时间= 该语句执行次数*执行一次所需的时间。

c语言数据结构出现缘由


数据结构的重要性:

献给 Linux c初学者


在计算机发展初期,计算机主要用于处理数值计算,程序设计人员主要把精力集中在程序设计方法和技巧上,随着计算机应用领域的扩大和软硬件的发展,计算机对信息的处理已从单一的数值计算发展到大量的解决非数值计算问题,
其处理的信息由简单的数值发展为字符 图像 声音 动画 等结构非常复杂的数据,而数据结构正是随着解决这些问题而产生的一个新的概念。
非数值计算问题的数据之间的相互关系一般无法完全用数学方式加以描述,而且许多应用系统规模庞大、结构复杂,因为这时已经不单单是数值计算问题,而是我们如何将这些对象进行存储和传递,并且将数据结构的细项进行相关的数值计算,从而有效的解决实际问题。
由于在计算机中我们主要是进行信息的表示 存储 处理。
信息的表示直接影响信息处理的效率,随着计算机的普及、信息量的增加、信息范围的拓宽,需要我们对这些数据对象进行深入细致的发掘,而数据结构正是研究这些对象的数据特性。


在现在面向对象语言中,我们的实体类就类似于c语言中的数据结构。

数据结构涉及问题归纳:

数据结构主要讨论如何以最节省存储空间的方式来表示数据;
各种不同的数据结构表示方法及相关算法
如何有效地改进算法效率使程序的执行速度更快
快速处理数据的技巧 如排序 查找 等算法

相关阅读:
base64编码方式
编码种类
文件为什么需要编码

c语言数据机构中的基本概念

linux c初学者需掌握数据结构中的基本概念术语
首先我们定义一类数据
工人工时信息表

姓名

工时费

材料费
张三

100

101
刘四

200

201
王五

300

301

表 1.1 工人工时信息表


数据

数据是信息的载体,它是描述客观事物例 数字 字符 所有能输入至计算机并且能被计算机设别 加工处理的信息的集合。
数据不只是通常我们所见到的数字,也可以代表字符串 图像 声音 动画等,这些能够被计算机识别和处理的东西,我们都称之为 “数据”。
例:表1.1 工人工时信息表我们称之为”数据”,
假如我们现在要获取工人“王五”的工时材料信息,那么“王五” 所处行的数据信息就称之为 王五的工时材料数据。


数据项

数据项是数据中具有独立意义并且不可进行细分的最小单位,它是对数据元素属性的描述,数据项我们也称之为“字段”。
例: 表1.1
工时 100 、200 、300 这些不可再分多数据我们称之为 “数据项”


数据元素

数据元素是数据的基本单位,是对一个客观实体的数据描述,一个数据元素可以由一个或若干个数据项组成。
例:表 1.1
王五 工时 300 材料 301 这三个数据项组成的集合,我们称之为“数据元素”
王五 工时 300 我们也可以称之为”数据元素”


数据对象

具有相同性质的数据元素的集合,我们称之为数据对象,它是数据的一个子集。
例 :
表中的三行数据我们可以称之为“数据对象”
表中的两行 两相同列数据 放入一个集合中,我们也可以称之为 “数据对象”。


数据类型

具有相同性质的计算机数据的集合及定义在这个数据集合上的一组操作的总称。


数据机构

数据之间的相互关系(即数据的组织形式)及在这些数据上定义的数据运行方法的集合。