数据结构算法之概述

  1. 1.简介
    1. 1.1数据结构
      1. 1.1.1数据结构的基本功能
      2. 1.1.2常用的数据结构
    2. 1.2算法
      1. 1.2.1算法的五个特征
      2. 1.2.2算法的基本原则
  2. 总结
  3. 联系作者
    1. 微信公众号
    2. QQ群

1.简介

接下来我们将梳理数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子。

编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱。
一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数据结构和算法的人也能编程。
但是如果一个开车的人懂变速箱的原理,比如降低速度来获得更大的牵引力,或者通过降低牵引力来获得更快的行驶速度。
那么爬坡时使用1档,便可以获得更大的牵引力;下坡时便使用低档限制车的行驶速度。

回到编程而言,比如将一个班级的学生名字要临时存储在内存中,你会选择什么数据结构来存储,
数组还是ArrayList,或者HashSet,或者别的数据结构。
如果不懂数据结构的,可能随便选择一个容器来存储,也能完成所有的功能,
但是后期如果随着学生数据量的增多,随便选择的数据结构肯定会存在性能问题,
而一个懂数据结构和算法的人,在实际编程中会选择适当的数据结构来解决相应的问题,会极大的提高程序的性能。

1.1数据结构

数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。

1.1.1数据结构的基本功能

  • 如何插入一条新的数据项
  • 如何寻找某一特定的数据项
  • 如何删除某一特定的数据项
  • 如何迭代的访问各个数据项,以便进行显示或其他操作

1.1.2常用的数据结构

  • 数组Array
  • 栈Stack
  • 队列Queue
  • 链表Linked List
  • 树Tree
  • 哈希表Hash
  • 堆Heap
  • 图Graph

这几种数据结构的优缺点如下:

数据结构 优点 缺点
数组 插入快 查找慢,删除慢,大小固定,只能存储单一元素
有序数组 比无序数组查询快 插入慢,删除慢,大小固定,只能存储单一元素
提供后进后出的存取方式 存取其他项很慢
队列 提供先进先出的存取方式 存取其他项很慢
链表 插入快 删除慢 查找慢
二叉树 如果树是平衡的,则查找、插入、删除都快 删除算法复杂
红黑树 查找、插入、删除都快 树总是平衡的算法复杂
2-3-4树 查找、插入、删除都快。树总是平衡的。类似的树对磁盘存储有效 算法复杂
哈希表 如果关键字已知则存取极快 删除慢,如果不知道关键字存取慢,对存储空间使用不充分
插入、删除快,对最大数据项存取快 对其他数据存取慢
对现实世界建模 有些算法慢且复杂

1.2算法

算法简单来说就是解决问题的步骤。
在Java中,算法通常都是由类的方法来实现的。
前面的数据结构,比如链表为啥插入、删除快,而查找慢,平衡的二叉树插入、删除、查找都快,
这都是实现这些数据结构的算法所造成的。
后面我们讲的各种排序实现也是算法范畴的重要领域。

1.2.1算法的五个特征

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

1.2.2算法的基本原则

  • 正确性:算法应当满足以特定的“规则说明”方式给出的需求。
  • 可读性:算法为了人的阅读与交流,其次才是计算机执行。因此算法应该易于人的理解;另一方面,晦涩
    难懂的程序易于隐藏较多的错误而难以调试。
  • 健壮性:当输入的数据非法时,算法应当恰当的做出反应或进行相应处理,而不是产生莫名其妙的输出结
    果。并且,处理出错的方法不应是中断程序执行,而是应当返回一个表示错误或错误性质的值,以便在更高的抽象
    层次上进行处理。
  • 高效率与低存储量需求:通常算法效率值得是算法执行时间;存储量是指算法执行过程中所需要的最大存
    储空间,两者都与问题的规模有关。

总结

本篇文章我们简单的介绍了数据结构和算法的概念,算法是解决问题的步骤,而数据结构的实现离不开算法,
可能理解起来比较模糊,不用担心,后面我们会在具体的数据结构和算法实现过程中详细讲解。

联系作者

微信公众号

xiaomingxiaola
(BossLiu)

QQ群

58726094


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com

×

喜欢就点赞,疼爱就打赏

日记本 网文世界