您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

数据结构和算法的图解和实现

来源:网络整理 浏览:247次 时间:2021-02-25
为什么要学习数据结构和算法

很多人在实际工作中,并不会直接实现数据结构和写一个算法来解决实际问题,因为这些都在类库或者框架内部实现了,只需要调用类库或框架提供的 api。这些 api 极大的帮助了我们快速实现业务需求,开发出符合要求的产品。这样的 api 调用对程序猿(媛)来说不是那么的困难,导致现在越来越多的人开始步入这个高薪行业。做开发的人越来越多,为了提高门槛,很多企业开始注重候选人的基本功那就是数据结构和算法。

我们平时所用的技术都是基于数据结构和算法在上层做了封装,想要用好这些技术就得去了解,去熟悉这些技术所用的数据结构或者算法。当程序调用出错时,熟悉数据结构和算法对于阅读底层的源码会有很大的帮助。程序的性能瓶颈往往都跟数据结构和算法有关系的,每种数据结构有各种的优缺点,每种算法有不同的时间复杂度和空间复杂度,当你了解这些,你就能够使用合适的数据结构和算法让程序获得更优越的性能。

有些算法是用来解决一类问题,了解算法的思想,就能使用算法来解决同类问题。更高级一点讲,如果你对现有的技术不满意,就可以自己在数据结构和算法的基础上加以改进。

什么是数据结构

数据结构是计算机存储和组织数据的方式。数据结构是用来保存数据的集合。当数据以某种特定的关系联系起来,就需要选择对应的数据结构来存储,选择不同的数据结构对运行速度和存储效率都会有影响。

什么是算法

算法是解决问题的代码,是描述解决问题的过程。对于符合规定的输入,获得符合预期的输出。使用不同的算法解决相同的问题所花费的时间是不同的。空间复杂度和时间复杂度是用来衡量一个算法的优劣。

数据结构和算法的关系

数据结构是底层,为算法提供服务。算法总是要依赖种数据结构来解决问题。简而言之,程序就等于数据结构 + 算法。

数据结构分类

数据结构包括线性结构和非线性结构。

线性结构

线性结构是最常用的数据结构,特点是数据元素之间存在一对一的关系。线性结构有两种存储方式,一种是顺序存储叫做顺序表,其存储的元素在内存中是连续的,另外一种叫做链表,其存储的元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。

常见的线性结构有数组、队列、链表和栈。

非线性结构

非线性结构的一个结点元素可能有多个直接前驱和多个直接后继结点。非线性结构包括二维数组、多维数组、广义表、树和图。

常用数据结构

稀疏数组

队列

链表

哈希表

算法

递归

  • 迷宫回溯

  • 八皇后

排序

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 快速排序
  • 希尔排序
  • 归并排序
  • 基数排序
  • 堆排序

查找

  • 线性查找
  • 二分法查找
  • 二分法查找(非递归)
  • 插值查找
  • 斐波那契查找

分治算法

  • 汉诺塔

KMP算法

  • 暴力匹配
  • KMP匹配

贪心算法

普里姆(Prim)算法

克鲁斯卡尔算法

马踏棋盘算法

推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com