我想计算机或相关专业都学过数据结构的课程吧,反正当时我是听的懵懵懂懂,而且压根不知道是干嘛用的,为什么要有这个东西,你们呢?欢迎评论区交流!

什么是数据结构

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

软件开发人员主要关心的是如何为当前的问题来选择最优的数据结构。

为什么需要数据结构?

数据是程序的核心要素,无论你在写什么程序,都需要和数据打交道,来决定数据该以什么方式存储、不同结构对性能的影响以及是否可以满足当前的需求。

比如订单详情,要确定订单的数据结构,该用什么数据结构存储,如何通过优化数据结构来提高检索性能

数据结构具有哪些能力?

  • 建立数据模型
    地图坐标x、y数据信息;二维矩阵、三维矩阵,通过数据结构来建立这些模型
  • 提高特定运算性能
    在部分情况下可以优化性能,但不总是这样;有时通过牺牲一部分性能来提高另一部分性能,比如空间换时间
  • 实现特定算法
    通过某些数据结构来支撑特定的算法,比如FIFO的特性,队列数据结构来支撑实现;栈来实现先入后出

如何学习数据结构?

思考如下几个问题:

  1. why:为什么需要这个数据结构?
  2. when:什么时候使用这个数据结构?
  3. how:使用很简单,但如何保持这个数据结构?

8种常用数据结构

  1. 数组Array,最简单、常用的数据结构
  2. LIFO (Last In First Out),先入后出的特点,比如我们CTRL+Z,就是利用了栈的LIFO特性
  3. 队列FIFO (First In First Out),先入先出,比如分布式种的消息队列
  4. 链表:看起来与数组非常像,但它们的内存分配方式、内部结构、插入删除操作方式都不一样。常见的有单向链表、双向链表
  5. :通过多个节点(vertex)构成,节点之间可以相互连接形成一个网络。常见的有无向图、有向图。常见的遍历图的算法有广度优先搜索、深度优先搜索
  6. :一个分层的数据结构。常见的有红黑树、二叉树
  7. 前缀树:用于处理字符串相关的问题时非常高效。它可以实现快速检索,常用于字典中的单词查询,搜索引擎的自动补全甚至 IP 路由。
  8. 哈希表:将一个对象进行Hash,得到一个此对象的唯一标识符,就比如Object.hashCode()

思考

链表和递归的区别

  • 链表:一种链表的数据结构,链表具有天然的递归性,当前节点处理完成后,可以获取next节点为入参继续调用同样的方法处理
  • 递归:一种递归算法,可以通过不同的数据结构来实现递归算法。本质上,就是将原来的问题,转化为更小的同一问题

扩展

LISP(源码本身就是数据结构)

LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。LISP作为应用人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C、Fortran和面向对象的Java、C#等结构化程序设计语言。

参考

  • https://www.cnblogs.com/jsersudo/p/9866088.html
  • https://www.cnblogs.com/biehongli/p/12435877.html

数据结构与算法--基本介绍相关推荐

  1. 数据结构和算法基本介绍和概念

    数据结构和算法介绍 什么是数据结构和算法 广义上,数据结构就是一组数据的存储结构,算法就是操作数据结构的一种方法. 程序 = 数据结构 + 算法 结构是数据元素之间不是独立的,存在特定的关系,数据结构 ...

  2. 30 个重要数据结构和算法完整介绍(建义收藏保存)

    一.数据结构 1. 数组(Arrays) 数组是最简单也是最常见的数据结构.它们的特点是可以通过索引(位置)轻松访问元素. 它们是做什么用的? 想象一下有一排剧院椅.每把椅子都分配了一个位置(从左到右 ...

  3. 数据结构与算法(Java版) | 本套系列教程的内容介绍

    文章目录 本套系列教程的内容介绍 第一章节:内容介绍和授课方式 第二章节:数据结构与算法的介绍 第三章节:稀疏数组和队列 第四章节:链表 第五章节:栈 第六章节:递归 第七章节:排序算法 第八章节:查 ...

  4. 一文带你认识30个重要的数据结构和算法

    摘要:掌握DSA意味着你能够使用你的计算和算法思维来解决前所未见的问题.通过了解它们,您可以提高代码的可维护性.可扩展性和效率. 本文分享自华为云社区<30 个重要数据结构和算法完整介绍> ...

  5. 从零学习数据结构与算法---基础与课前准备笔记

    这里开始学习 数据结构与算法相关知识,这个主要是基于 极客时间 大佬  覃超老师的 算法训练营 和  王争老师的 数据结构与算法之美.这里再次感谢两位老师,下面文章内容主要是自己作为复习使用的笔记,如 ...

  6. 数据结构与算法(无排版有兴趣的小伙伴可私我要原版)

    数据结构与算法 课程介绍 数据结构和算法,一个非常古老的课题. 上学的时候就觉得数据结构和算法很难学,似乎就从来没学明白过. 工作的时候,只求程序能跑,并不太关注性能,所以尽量避坑(ArrayList ...

  7. 数据结构和算法_01、内容简介

    数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 一般来讲 程序会使用了内存计算框架(比如Spark)和缓存技术(比如Redis等)来优化程序,再深入的思考一 ...

  8. 数据结构和算法练习网站_视频和练习介绍了10种常见数据结构

    数据结构和算法练习网站 "Bad programmers worry about the code. Good programmers worry about data structures ...

  9. python leetcode_leetcode 介绍和 python 数据结构与算法学习资料

    for (刚入门的编程)的高中 or 大学生 leetcode 介绍 leetcode 可以说是 cs 最核心的一门"课程"了,虽然不是大学开设的,但基本上每一个现代的高水平的程序 ...

最新文章

  1. 探寻阿里云服务器迈入2.0时代的技术要点
  2. python基础教程:数值与字符串类型
  3. django model filter_django中探索如何提高查询数据效率
  4. Bootstrap常用类
  5. Zookeeper_简介
  6. 【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)
  7. redis与mysql性能对比、redis缓存穿透、缓存雪崩
  8. html 双 直线 公文,公文格式标准页面设置
  9. opencv遍历像素输出像素值
  10. 索尼z2d6503刷机包原厂售后专用固件
  11. 听风的插件-集成到设置中
  12. 母牛生小牛问题-字节跳动笔试题
  13. 截图转换为gif动图,gif动图制作
  14. Unity替换 图集
  15. opencv里的Moments成员变量的理解
  16. Mac电脑忘记管理员密码与忘记登陆密码处理(开机/恢复出厂设置/重置)
  17. vite.config.js配置入门与小记
  18. 计算机毕业设计Java拉萨旅游自助民宿平台(源码+mysql数据库+系统+lw文档)
  19. 怎样快速画出一个正方体_word中绘制正方体的方法详解步骤
  20. 2022秋招,算法岗最全面试攻略,吃透28个必问题直接速通大厂

热门文章

  1. java 定义常量数组_js 定义常量数组
  2. WSO2 ESB(4)
  3. 如何从光盘本地安装CentOS 7图形界面(Gnome GUI)
  4. 幸福手机,给爸妈的高端大气上档次的手机
  5. 深度复盘:滴滴专车会员项目如何做好设计优化?
  6. 5天2亿活跃用户,2017QQ“LBS+AR”天降红包活动后台揭密
  7. 邓白氏编码 苹果证书申请完的感受
  8. Baidu Story(百度传奇)
  9. 字节跳动春招——雀魂启动
  10. java实现instr_Oracle的instr()函数详解