【戏玩算法】01-咱来唠会儿数据结构与算法

简介: 本篇文章介绍了数据结构与算法的概念,以及几种常见的数据结构是什么,有什么优点和缺点;在文章的最后还介绍了算法的五个特征以及算法所追求的目标。
Hi~,我是 一碗周,一个在舒适区垂死挣扎的前端,如果写的文章有幸可以得到你的青睐,万分有幸~

🍉 写在前面

数据结构与算法这个词相信大家都听过、了解过、学过,那为什么要学习数据结构与算法呢?我感觉有以下两个原因:

  • 为了一个比较满意的Offer,现在去面试任何一家公司,不管你是前端还是后端,多多少少会问一些关于算法的问题;
  • 编程需要,如果没有很好的数据结构与算法的功底,很多事情都是知其然不知其所以然,无法深入的学习,还有就是随着项目的复杂,数据量也随之变大,数据结构与算法可以更优雅的处理这些数据。

程序=数据结构+算法,是计算机科学界的一个经典名句,这句话也体现了一个应用程序是与数据结构和算法密不可分的。

🍐 数据结构

首先我们先来了解一下数据结构,数据结构就是计算机存储和组织数据的一种方式,指相互之间存在一种或者多种特定关系的集合。在不同的场景选择更适合的数据结构,可以为应用程序带来更好的运行效率和存储效率。

🍑 常见的数据结构

常见的一些数据结构主要有以下几种:

  • 数组(Array) :数组是一种聚合数据类型,它是将具有数据类型的的一些变量有序的组织到一起的一个集合;

    优点是插入快;缺点是查找、删除慢,只能存储单一类型的元素;

  • 链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。

    优点是插入、删除快;缺点是查找慢;

  • 栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。

    优点是提供先进后出的存储方式,缺点是对其他项操作都很慢;

  • 队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。

    优点是提供先进先出的存储方式,缺点是对其他项操作都很慢;

  • 树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
  • 图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。

🍒 算法

算法简而言之就是解决问题的步骤,对特定问题求解步骤的一种描述,他的定义的是解决特定问题求解步骤的准确而完整的描述,在计算机中表现为一系列指令的集合,算法代表着用系统的方法描述解决问题的策略机制

举两个例子来说明一下什么是算法:

  • 去北京看演唱会

    首先我们需要确定地点、然后购买门票、车票、入场、看演唱会、演唱会结束

  • 把大象装进冰箱

    把冰箱门打开,大象塞进去,关上冰箱门。

虽然把大象装进冰箱这是一个玩笑话,假设这真的是一个问题,解决问题的步骤适用于任何动物。

🫐 算法的特征

算法具有以下五个特征:

  • 有穷性:对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即:算法中的每个步骤都能在有限时间内完成。
  • 确定性:在每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。
  • 可行性:算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。
  • 有输入:作为算法加工对象的量值,通常体现在算法当中的一组变量。有些输入量需要在算法执行的过程中输入,而有的算法表面上可以没有输入,实际上已被嵌入算法之中。
  • 有输出:它是一组与“输入”有确定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法功能。

🍎 算法的目标

一个优秀的算法需要追求以下两个目标:

  • 运行所需的时间更少
  • 占用的内存空间更小

上面所说的正是时间复杂度空间复杂度的概念,相信很多同学都对这两个概念有所了解,不了解也没有关系,下篇文章介绍时间复杂度和空间复杂度。

🍌 写在最后

本篇文章介绍了数据结构与算法的概念,以及几种常见的数据结构是什么,有什么优点和缺点;在文章的最后还介绍了算法的五个特征以及算法所追求的目标。

本专栏采用JavaScript作为编程语言,从前端的角度去介绍数据结构与算法,如果对你所有帮助,可以点个关注支持一下啊~
目录
相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
84 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
2月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
33 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
2月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
36 4
|
2月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
22 0
数据结构与算法学习十四:常用排序算法总结和对比
|
2月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
37 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
2月前
|
机器学习/深度学习 存储 算法
【数据结构与算法基础】——算法复杂度
【数据结构与算法基础】——算法复杂度
|
2月前
|
机器学习/深度学习 搜索推荐 算法
探索数据结构:初入算法之经典排序算法
探索数据结构:初入算法之经典排序算法
|
2月前
|
算法 Java 索引
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
25 0
|
2月前
|
存储 算法 Java
数据结构和算法--分段树
数据结构和算法--分段树
17 0
|
2月前
|
算法
计科一二班算法数据结构实验9答案
计科一二班算法数据结构实验9答案
16 0