说在整个初阶数据结构开头
数据结构其实也学了挺长时间了,说着是要刷题所以才没怎么去写关于数据结构方面的内容。数据结构作为计算机中及其重要的一环,如果不趁着假期系统整理一下着实可惜,我这里构想的是将初阶数据结构和高阶数据结构,分别分成两个部分,初阶数据结构呢,大概有以下内容
- 本篇:导论,算法的时间复杂度和空间复杂度
- 线性表专题---顺序表
- 线性表专题---单链表(不带头双向不循环链表)
- 线性表专题---双向链表(带头双向循环链表)
- 栈和队列
- 二叉树和堆
- 排序专题
后期会根据具体内容拆分修改
初阶数据结构中我会用C语言来实现不同的结构
在高阶数据结构中,将会用C++来介绍二叉搜索树,AVL树,红黑树,哈希等
到这里,不再废话,就开始今天的内容吧!
数据结构是什么?
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
算法是什么?
算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
算法的时间复杂度和空间复杂度
算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度
时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。
时间复杂度
1.时间复杂度的定义
在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法的用时随数据规模而增长的趋势,即 时间复杂度
//计算以下Fun1中++count执行了多少次?
void Fun1()
{
int count =