一 数据的基本概念
1、数据:所有能输入计算机并被识别的符号
数据元素:数据基本单位,由若干数据项组成(比如数据库里的一条数据)
数据项:最小数据单位(比如数据库里一条数据的每一列就是一个数据项)
数据对象:性质相同的数据的集合
2、计算机处理的计算问题分为两大类:数值计算、非数值计算。
数据结构研究非数值计算,是有特定关系的数据元素的集合。
数据结构四种基本类型:集合、线性、树和网(这俩也叫非线性)
3、数据结构的研究视角:
数据的逻辑结构:从逻辑关系上描述数据,独立于计算机之外
数据的存储结构:逻辑结构在计算机上的物理实现(分为顺序和链式两类)
顺序存储:把逻辑上相邻的元素存储在相邻的数据单元中,用其存储位置来表示其逻辑关系。
链式存储:逻辑上相邻的元素在存储器中不一定相邻。用附加地址表示数据元素之间的逻辑关系。
索引存储结构:在存储结点信息的同时,还建立附加的索引表,存取数据时,都必须依赖索引。
散列存储结构:是根据结点的值确定结点的存储位置。通过某个函数(散列函数)计算出其存储地址。它只存储结点的数值而不存储结点间的关系。
顺序存储结构:数组或指针指向的一片连续空间。
顺序表:线性表中逻辑上邻接的两个数据节点,其存储结点在物理位置上也是相邻的,以这种顺序存储结构实现的线性表,被称为“顺序表”。
线性表:属于同一个数据对象的数据元素的有限序列。线性表中数据元素的个数称为线性表的长度。如:(1,3,5,7,9)是个线性表,数据元素类型为整数,长度为5,其中1是3的直接前驱,5是3的直接后继。基本操作:存取、插入、删除、查找、求表长(求线性表中元素的个数)、表的合并
二叉树,我认为就是为了2分法而存在的,查找快。
哈夫曼树,唯一特点就是每个节点都是最优、唯一。
hash函数,我认为用处就是将数据的hash值与其存储地址对应,查找时不用再比较。
treeset 是二叉树(红黑树)实现的,treeset中的数据是自动排好序的,不允许放入null值,值不能重复。
hashset 是哈希表实现的,hashset中的数据是无序的,可以放入null,值不能重复。
hashset 要求放入的对象,必须实现hashcode方法,放入的对象,是以hashcode码作为标识,而具有相同内容得String对象,hashcode是一样的,所以放入的内容不能重复
适用场景分析:hashset是基于hash算法实现的,其性能通常都优于treeset。为快速查找而设计的set,应该用hashset,在需要排序时,才用treeset。
hashmap:基于哈希表实现,适用时要求添加的键类明确定义了hashcode()和equals()。
treemap:基于红黑树实现。它没有调优选项,因为该树总处于平衡状态。
适用场景分析:hashmap适用于map中插入、删除、定位元素。treemap适用于按自然顺序或自定义顺序遍历键(key)。
刚看数据结构时,还在奇怪这些原理怎么用代码实现,用起来总用代码实现这些原理,岂不是很麻烦?
后来才明白,java自己的集合框架已经帮我们实现了这些,我们根据原理,将其直接应用到不同的场景即可。
二、算法
算法:在数据的逻辑结构上,对数据施加的操作(有检索、插入、删除、更新、排序等)
1、算法:algorithm,解决特定问题的方法,它用特定的程序设计语言来描述,就成了程序。
2、算法语法:
  1. 预定义常量和类型:True  1  False  0
  2. 算法的函数描述:赋值语句,选择语句,循环语句,结束语句,输入输出语句
3、算法效率的度量
3.1时间复杂度:将算法中重复执行的次数作为其执行时间的量度。
简单来说就是指算法中某种基本操作执行次数的数量级。通常用T(n)=O(f(n)),其中O表示f(n)的数量级。它表示随着问题的规模n的增大,算法的执行时间的增长率和f(n)的增长率相同,称为算法的渐进时间复杂度,简称时间复杂度。
3.2 空间复杂度:程序运行从开始到结束所需的存储空间。度量记作S(n)=O(f(n))

认真学习系列:数据结构与算法——慕课网笔记相关推荐

  1. 一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽

    网络上流传着一句段子"程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱".英文,我们暂且不谈,我们先来谈谈算法. 算法之难,在于将精巧的逻辑,通过合适的数据结构, ...

  2. 学习JavaScript数据结构与算法(一):栈与队列

    本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列 第二篇文章:学习JavaScript数据结构与算法(二):链表 第三篇文章:学习JavaScript数据结构与算法(三): ...

  3. 一般项目中哪里体现了数据结构_优秀程序员都应该学习的数据结构与算法项目(GitHub 开源清单)...

    前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 强烈推荐 GitHub 上值得前端学习的数据结构与算法项目,包含 gif ...

  4. 重读《学习JavaScript数据结构与算法-第三版》- 第6章 链表(一)

    定场诗 伤情最是晚凉天,憔悴厮人不堪言: 邀酒摧肠三杯醉.寻香惊梦五更寒. 钗头凤斜卿有泪,荼蘼花了我无缘: 小楼寂寞新雨月.也难如钩也难圆. 前言 本章为重读<学习JavaScript数据结构 ...

  5. GitHub 上值得前端学习的数据结构与算法项目

    Hello,大家好,我是你们的 前端章鱼猫. 简介 前端章鱼猫从 2016 年加入 GitHub,到现在的 2020 年,快整整 5 个年头了. 相信很多人都没有逛 GitHub 的习惯,因此总会有开 ...

  6. es6 数组排序_重读《学习JS数据结构与算法-第三版》- 第3章 数组 二

    定场诗 守法朝朝忧闷,强梁夜夜欢歌:损人利己骑马骡,正值公平挨饿:修桥补路瞎眼,杀人放火儿多:我到西天问我佛,佛说:我也没辙! 前言 读<学习JavaScript数据结构与算法>- 第3章 ...

  7. 《学习JavaScript数据结构与算法》第三章 数组

    文章目录 前言 一.创建 && 初始化数组 二.操作数组 push-添加元素于末尾 unshift-添加元素于开头 pop-从数组末尾开始删除元素 shift-从数组开头开始删除元素 ...

  8. 读《学习JavaScript数据结构与算法》 第二章

    第二章 ECMAScript和TypeScript概述 文章目录 第二章 ECMAScript和TypeScript概述 前言 一.let const 二.模板字面量 支持换行 拼接方式 三.函数的默 ...

  9. 王道数据结构与算法:完整笔记

    王道数据结构与算法:完整笔记 文章目录 数据结构笔记 第一章 绪论 1.1 基本概念 1.2 数据结构三要素 1.3 算法的概念 1.4 算法效率的度量 第二章 线性表 2.1 线性表的定义和基本操作 ...

最新文章

  1. 为什么BCH有了0确认还要缩短时间
  2. 安装python缺少dll_解决Python安装时报缺少DLL问题【两种解决方法】
  3. ++和--操作符分析
  4. SpringBoot中怎样基于slf4j封装日志类输出日志
  5. 第十三章、创建接口和定义抽象类
  6. 在 Linux 下使用 RAID(二):使用 mdadm 工具创建软件 RAID 0 (条带化)
  7. WordPress简约博客主题模板Chen主题V1.2
  8. linux查看当前igb的版本信息,Linux下查看网卡驱动和版本信息
  9. 在Linux和qt下安装EasyPr遇到的问题
  10. GLPI 无法登录、账号没有权限的解决方法
  11. mysql 1114错误_mysql cluster导表时报1114问题
  12. kettle发送邮件
  13. UCenter 通信
  14. MySQL Workbench 8.0新建SCHEMAS和Table
  15. 存地失人,人地皆失;存人失地,人地皆存。
  16. Linux命令行下设置黑底绿字
  17. 「算法」拓扑排序(货真价实,童叟无欺)
  18. c语言魔法阵原理,魔法阵构成理论及运行原理
  19. 解决Circular reference问题
  20. python做乘法运算定律_《乘法运算定律》(一)教学设计

热门文章

  1. Grails 1.2参考文档速读(4):第3章剩余内容
  2. 1. Windows Powershell初接触
  3. .NET3.5 GDI+ 图形操作2
  4. 10-4 用select进行调度
  5. python给女朋友_【转】python实战——教你用微信每天给女朋友说晚安
  6. java高级类型_Java第四章高级类属性一
  7. 中livechart显示大数据_大数据显示:辽宁新基建技能人才存量居全国第十位
  8. 迈特斯机器人_WIE-R红外热像视频内窥镜
  9. 机器视觉:平行光源在双远心系统中的应用
  10. 分页总页数计算方法 所有分页通用