计算机基础——数据结构篇概览
数据结构:
1. 线性结构:数组、链表、栈、队列
(特点原理等了解清楚)
数组(基本数据结构)
特点:支持随机访问,访问速度快,连续存储对CPU缓存机制友好,插入删除速度慢,不支持扩展
链表(基本数据结构)
特点:不支持随机访问,访问速度慢,插入删除较快,支持长度扩展
分类:单链表,循环链表,双向链表,双向循环链表。
栈
特点:先进后出,只能在栈顶删除和插入元素
分类:顺序栈(数组实现),链式栈(链表)
应用:括号匹配、浏览器回退前进(两个栈实现)、反转字符串、维护函数调用(最后调用的先执行完)
队列
特点:先进先出,在队尾(rear)入队,在队头(front)出队,维护两个指针
分类【顺序队列(数组)、链式队列(链表)】:单队列,循环队列(解决假溢出问题)
2. 非线性结构:树、图、堆
树
- 特点:树形结构的元素之间有着明显的层次关系
- 扩展结构:二叉树、B树、B+树、红黑树
- 存储:使用数组或链表
- 树形结构应用较多,且每一种都有点复杂,后面单独补充这部分内容
图
特点:关系复杂,无序
分类:无向图和有向图、无权图和带权图
存储方式:
邻接矩阵:底层是一个二维数组,访问高效速度快,但浪费空间
邻接表:底层是数组+链表,节省空间
搜索方式:
广度优先搜索:访问的顶点放入队列,先访问到的先出队。每次访问时取出队首结点,再访问该结点的所有后继结点,将未访问过的结点入队,继续访问下一个队首结点,重复上述过程,直到队列为空且没有需要入队的结点。
深度优先搜索:访问的顶点放入栈中,先访问到的后出栈。每次访问时取出栈顶结点,再访问该节点所有后继结点,将未访问过的结点入栈,继续访问下一个栈顶结点,重复上述过程,直到栈为空且没有需要入栈的结点。
堆(一般用数组实现)
- 特点:任意一个节点的值都大于等于或小于等于它所有子节点的值;堆是一棵完全二叉树
- 分类:大顶堆、小顶堆
- 堆操作:
- 堆化:为了保持堆的性质,对结构进行调整。分为自底向上,和自顶向下。
- 插入元素:将插入元素放到数组末尾,再自底向上堆化,将该元素放在该放的位置上
- 删除堆顶元素:
- ①使用自顶向下(也叫石沉大海):将末尾元素填充到堆顶的位置,不停和左右子节点比较,与较大的结点交换位置,重复此操作,直到无法交换位置。不会产生”气泡“。
- ②使用自底向上:将堆顶元素的左右子节点进行比较,较大者元素填充到堆顶位置,重复此操作,直到移不了位置(堆底部)。此方法可能会产生”气泡“。
- 堆排序:
- 建堆(数组时无序的,要堆化成小顶堆或大顶堆的性质)
- 排序
- 先取出堆顶元素;
- 将末尾元素放在堆顶,将取出的堆顶元素放在数组末尾;
- 采用自顶向下的堆化,继续取出堆顶元素放在末尾,直到所有非叶节点都堆化完成(所有非叶节点的索引是1~n/2)。
计算机基础——数据结构篇概览相关推荐
- 计算机基础-数据处理能力的限制因素及流量测量
2017年05月07日 19:32:05 shuaixio 阅读数:1083更多 个人分类: 计算机基础 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- 计算机基础-数据存储
位和位存储 在计算机中,信息是以0和1的模式编码的.每一个0或者1表示一位. 布尔运算 在布尔运算中,0表示假,1表示真. 基本的布尔运算:AND(与),OR(或),ORX(异或),NOT(非) 门和 ...
- 计算机基础——操作系统篇概览
操作系统 1.os基础 操作系统基本概念:运行在计算机上的一种程序,管理计算机上的软件和硬件资源,包括进程,内存管理,硬件设备管理等(内核负责). 系统调用:运行在用户态的程序需要调用系统态下的资源, ...
- 计算机信息通信基础知识,计算机基础-(数据通信基础知识)
计算机基础(数据通信基础知识) 通信协议是计算机之间交换信息所使用的一种公共语言的规范和约定,因特网的通信协议包含100多个相互关联的协议,由于TCP和IP是其中两个最核心的关键协议,故把因特网协议簇 ...
- 从硬盘上把数据传回到计算机称为什么,计算机基础知识 第一章 习题三
计算机基础知识第一章习题三 一.填空题 1. 高级语言不能直接被计算机识别并执行,必须翻译成机器语言,翻译的方式有两种:一种是编译方式,另一种是方式. 2. 计算机中存储数据的最小单位是:存储容量的基 ...
- 计算机基础简介、编程语言、翻译器、数据储存
计算机基础: 编程语言: 编程语言分机器语言.汇编语言.高级语言,机器语言只有计算机本身认识,是二进制的:汇编语言是较低层的指令式语言,有很多指令单词发出命令,程序员可以认识,前两者直接对硬件操作:高 ...
- 进制操作,数据底层计算机基础
位运算(&.|.^.~.>>.<<) 1.位运算概述 从现代计算机中所有的数据二进制的形式存储在设备中.即0.1两种状态,计算机对二进制数据进行的运算 (+.-.*./ ...
- 计算机系统组成及工作原理PPT,第二章 计算机基础知识 2.1 计算机系统的组成与工作原理 2.2 数制转换及运算 2.3 数据在计算机中的表示....
Presentation on theme: "第二章 计算机基础知识 2.1 计算机系统的组成与工作原理 2.2 数制转换及运算 2.3 数据在计算机中的表示."- Presen ...
- python数据处理电脑配置_『大数据python计算机基础教学视频教程』入门学python需要什么配置的电脑...
x = 1 if x 4.2 1) else匹前的缩进相同且最接近的if 2) 改之前y=x 2行,之后是y=x 1先执行 第5题 代码还n = 1 while n <= 5: i = 1 wh ...
最新文章
- Java类和对象的初始化顺序
- DPDK — 数据平面开发技术
- Error creating bean with name ‘multipartResolver‘: Lookup method resolution failed; 上传文件异常
- 配置lamp+supervisor
- 高薪面试题必备之HashMap 的底层原理
- Mysql Explain的简单使用
- (计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式
- ORACLE使用数据泵导入导出部分表
- android 百度地图大头针,百度地图(大头针)
- linkedhashmap中关于LRU算法的实现
- Java_模拟comet的实现
- Study From DevOps 学习交流会议
- Windows XP十五周年:由爱生恨的系统霸主
- MongoDB快速入门学习
- C++ opencv 识别火焰 (代码)
- (2.4)【服务型木马-winshell】最小木马:使用方法
- dbeaver连接Oracle中文乱码的解决方案--druid
- 【数据结构】排序算法
- 互联网产品经理是通才不是专才
- Apache Sqoop job 作业
热门文章
- Eclipse中显示空格符、制表符和换行符
- 我该怎么救救我弟弟???
- 实验室考核复习(三)----运放基础
- 2022年全国职业院校技能大赛网络安全试题模块A(超级详解答案)
- Vim技能修炼教程(10) - 代码跳转
- Android cec设备,Android和HDMI CEC
- 多子系统多业务模块的复杂数据处理——基于指令集物联网操作系统的项目开发实践
- python 泛型_python 泛型注释的不理解?
- 论文笔记:Densely Connected Convolutional Networks (2017 CVPR)
- 疯狂Java讲义_五子棋代码