数据结构和算法基础概念介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/afei__/article/details/82944928

一、什么是算法

算法是指一系列解决问题的清晰指令。

 

二、算法特征

  1. 有穷性:算法必须能够在执行有限个步骤之后终止
  2. 确切性:算法的每一步都必须要有确切的定义
  3. 输入项:算法必须有0个或多个输入,描述算法执行的初始状态。0个输入即算法本身已经拥有了初始条件
  4. 输出项:算法必须要有一个或者多个输出,反应算法加工后的结果,没有输出的算法是没有意义的
  5. 可行性:算法的每个操作都是可以在有限时间内完成的

 

三、算法评定

不同算法的优劣不同,影响到程序的执行效率。算法分析主要从时间复杂度和空间复杂度两个维度来评定。其余还有正确性、可读性、健壮性等。

1. 时间复杂度

时间复杂度描述算法的运行时间,记作 T(n)。时间复杂度通常使用大O表示法。

1.1 概念

大O表示法指出了算法有多快。例如存在n个元素,查找其中是否存在某个元素,使用简单查找检查每个元素的话需要进行n次操作,使用大O表示法表示运行时间即O(n)。

大O表示法的单位并非是秒或者毫秒这样的时间单位,而是让你能够比较操作数,指出了算法运行时间的增速。

大O表示法忽略常量和低阶的数据,例如 "3n^2 + n + 2" 的时间复杂度也是 O(n^2),"2n" 的时间复杂度即 O(n)。

1.2 常见时间复杂度

  • O(1) :常量时间。算法耗时与元素个数n无关,耗时为固定时长,例如获取数组中某个索引处的值。
  • O(lg n) :对数时间。例如二分查找。
  • O(n) :线性时间。例如简单查找。
  • O(n * lg n) :这样的算法包括快速排序——一种速度较快的排序算法
  • O(n^2) :平方时间。例如选择排序、冒泡排序
  • O(n!) :阶乘时间。例如旅行商问题——一种非常慢的算法
    以上时间复杂度依次增大。

2. 空间复杂度

空间复杂度是指算法执行过程中临时所需要的内存空间大小的量度,通常记作 S(n)。

 

四、数据结构

1. 什么是数据结构

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

2. 常用数据结构

  • 数组:按序列排列的连续的相同类型的数据集合成为数组
  • 栈:只能在一端进行插入和删除的线性表
  • 队列:只能在前端进行删除操作,只能在后端进行插入操作的线性表
  • 链表:物理上非连续的存储结构。每个结点存储两部分信息:数据和下一个结点位置
  • 树:一系列结点的有穷集合
  • 图:结点的有穷结合V和边的集合E组成
  • 堆:堆是一种特殊的树形结构,每个结点都有一个值
  • 散列表:以键值对形式存在的一种数据结构

猜你喜欢

转载自blog.csdn.net/afei__/article/details/82944928
今日推荐