数据结构与算法(零)-前言
文章目录
- JavaScript数据结构与算法
- 一、什么是数据结构?
- 结论
- 常见的数据结构
- 二、什么是算法(Algorithm)?
- 算法的定义
- 案例
- 往期精彩文章
JavaScript数据结构与算法
本系列文章是作者在B站学习完 《数据结构与算法》后,为了进行总结和复习而整理的学习笔记,视频讲解的特别好,给大家安利一波~
一、什么是数据结构?
数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。—中文维基百科
一句话总结:数据结构就是在计算机中,存储和组织数据的方式。
例如:图书馆中存放了很多书籍,怎样摆放图书既能放很多书,还方便取?
其实我们主要思考两个问题
- 新书怎么插入?
- 怎么快速对找到指定的书?
- 如果新书随便摆放,那么在找指定的书时,图书馆那么大,肯定会累死
- 按照书名的拼音字母顺序排放
- 新书的插入, 按照字母顺序找到位置,然后插入。
- 书籍的查找:根据字母顺序进行查找
- 现实生活中,图书馆会先划分类别,然后在对应类别中,根据字母顺序插入,这样查找效率会更高
结论
- 解决问题方法的效率,根据数据的组织方式有关
- 计算机中存储的数据量相对于图书馆的书籍来说数据量更大,更多
- 以什么样的方式,来存储和组织我们的数据才能在使用数据时更加方便呢?
- 这就是数据结构需要考虑的问题。
常见的数据结构
- 数组(Aarray)
- 栈(Stack)
- 链表(Linked List)
- 图(Graph)
- 散列表(Hash)
- 队列(Queue)
- 树(Tree)
- 堆(Heap)
- 字典(Dictionay)
注意:数据结构与算法与语言无关,常见的编程语言都有直接或间接的使用上述常见的数据结构。
二、什么是算法(Algorithm)?
算法的定义
- 一个有限指令集,每条指令的描述不依赖于语言
- 接收一些输入(有些情况下不需要输入)
- 产生输入
- 一定在有限步骤之后终止
算法通俗理解:解决问题的办法/步骤逻辑。数据结构的实现,离不开算法。
案例
假如杭州和上海之间有一条高架线,高架线长度是 1,000,000 米,有一天高架线中有一米出现了故障,请你想出一种算法,可以快速定位到处问题的地方。
- 线性查找
- 从上海的起点开始一米一米的排查,最终一定能找到出问题的线段。
- 但是如果线段在另一头,我们需要排查 1,000,000 次,这是最坏的情况,平均需要 500,000 次。
- 二分查找
- 从中间位置开始排查,看一下问题出在杭州到中间位置,还是中间到上海的位置。
- 查找对应的问题后,再从中间位置分开,重新锁定一般的路程。
- 最坏的情况,需要多少次可以排查完呢? 最坏的情况是 20 次就可以找到出问题的地方。
- 怎么计算出来的呢? log(1000000, 2),以 2 位底,1000000 的对数 ≈ 20。
结论:你会发现,解决问题的办法有很多,但是好的算法对比于差的算法,效率天壤之别。
往期精彩文章
- leetcode-js刷题记录&数据结构
- docker下YApi部署教程-支持swagger数据导入
- 带你深入理解什么叫js闭包
- 使用Object.defineProperty进行数据劫持,实现响应式原理-剖析vue2.0
- 前端性能优化之rel=“prefetch“预/懒加载功能
- 前端唤起相机的方法H5+JS
数据结构与算法(零)-前言相关推荐
- JavaScript数据结构和算法简述——前言
为什么要使用数据结构和算法(程序=数据结构+算法) 数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排.包括数组.链表.栈.二叉树.哈希表等. 算法是对这些结构中 ...
- 《算法和数据结构》算法零基础五十题讲解
前言 很多人加我都是想询问如何学好算法.我的方法是我用了 十年 的时间,自己总结出来的,不可能适合所有人,但是我觉得挺有效的,如果你觉得可行,尽管一试! 首先,我们心中要有一团
- JS数据结构与算法 笔记
JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...
- vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言
基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...
- 第一章 数据结构与算法-前言
Hello,I'm 郭永峰,一名IT从业者,也是一名Java Sharer.Teacher.欢迎添加微信号或者QQ号,一起学习交流,微信与QQ同号(1030103135).目前在腾讯课堂也出了一些教程 ...
- 01_JavaScript数据结构与算法(一)前言
JavaScript 数据结构与算法(一)前言 什么是数据结构? 数据结构的定义 官方定义 无 民间定义 "数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系.这些 ...
- 数据结构与算法(python)递归:找零问题
参考自 MOOC数据结构与算法Python版 目录 一.什么是递归Recursion 1. 初识递归 1.1 数列求和 1.2 递归"三定律" 2. 递归的应用 2.1 任意进制转 ...
- 数据结构和算法_零基础入门01
数据结构和算法_零基础入门01 一.数据结构是什么? 逻辑结构.物理结构 二.算法 算法的五个基本特征 算法设计的要求 b站学习小甲鱼的数据结构与算法,自留笔记. 程序设计=数据结构+算法 一.数据结 ...
- 树的高度从零还是一开始数_数据结构与算法之1——树与二叉树
数据结构一直是让人头疼,面试遇到手撕算法题时真是慌得不行,从啥也不会刷题刷到游刃有余,路漫漫其修远兮~~.本人还是个算法菜鸟,而且还是想转行互联网的半吊子(好想拿大厂offer啊,幻想中..),希望能 ...
- 从零学习数据结构与算法---基础与课前准备笔记
这里开始学习 数据结构与算法相关知识,这个主要是基于 极客时间 大佬 覃超老师的 算法训练营 和 王争老师的 数据结构与算法之美.这里再次感谢两位老师,下面文章内容主要是自己作为复习使用的笔记,如 ...
最新文章
- 【C++ 语言】引用数据类型 ( 引用数据类型定义 | 引用数据类型使用 | 引用类型参数 )
- 主要几种通信协议的性能比较(转载)
- “幕后英雄”之Backing Fields【Microsoft Entity Framework Core随笔】
- 为什么linux的新得立软件下载,linux,debian_蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理?,linux,debian - phpStudy...
- MongoDB服务无法注册
- 学生如何提高专业英文阅读能力(施一公)
- c语言qsort函数源码,qsort源代码分析
- 未来Linux系统将是运维行业必备的技能之一
- JavaScript 作用域
- 老罗android开发视频教程学习完了
- edius隐藏快捷键_Eduis快捷键,大家参考一下!【EDIUS】史上最全的EDIUS快捷键资料分享!...
- 关于几种图片格式的压缩
- 企业名录114_1.36
- layui上传文件请求接口异常_解决layui table表单提示数据接口请求异常的问题
- 工欲善其事必先利其器–SimpleTestBed
- upupoo启动不了 mysql_【upupoo动态桌面壁纸和phpMySQLConsole 0.1哪个好用】upupoo动态桌面壁纸和phpMySQLConsole 0.1对比-ZOL下载...
- 使用VMware镜像文件快速安装Kali linux
- 终结符号和非终结符号
- Replication进阶(三) 复制心跳详解
- Python中range函数的用法