程序员每天都在使用的数据结构

更新时间:2018-09-25 16:50:34 点击次数:1741次

引言

经常能够听到这样的声音,都知道数据结构重要,但是开发中,几乎用不到。其实我们每天都在用,只是不关注。或者说换成了另外的一种形式,比如STL。

程序设计

还记得这个经典公式吗?
程序=算法+数据结构

一.数据结构的基本概念

**数据结构定义:**数据结构是一种存储和组织数据的方式,以便于访问和修改。数据结构包括数据的逻辑结构、数据的存储结构以及数据的运算,即按照某种逻辑关系组织起来的一批数据,按一定的映射方式把它存放在计算机的存储器中,并在这些数据上定义了一个运算的集合。

二.算法的基本概念

算法定义

计算机求解一个问题所需的一系列步骤

算法的基本特性:

  1. 输入:一个算法有0个或者多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身给出了初始条件;
  2. 输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  3. 有穷性:算法必须能在执行有限个步骤之后终止;
  4. 确切性:算法的每一步骤必须有确切的定义;
  5. 可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成。

算法设计的要求:

  1. 正确性:设计的算法能满足具体问题的需求,并且任何合法的输入都会得出正确的输出;
  2. 可读性:是指算法被写好之后,该算法理解的难易程度,一个算法可读性的好坏十分重要。如果一个算法比较抽象且难以理解,那么这个算法就不利于交流和推广使用,对于修改、扩展、维护来说都十分不方便,因此,在追求高效的同时,也应是算法尽量简明易懂。
  3. 健壮性:当输入数据非法时,算法也会做出相应的判断,而不会因为输入的错误而造成瘫痪。
  4. 时间效率高(时间复杂度)和需要的存储空间少(空间复杂度)

时间复杂度:

程序大概的执行次数(不是执行时间)。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度

空间复杂度:

该算法所耗费的存储空间,它也是问题规模n的函数。其是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

数据结构与算法思维导图

在这里插入图片描述

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!