算法
- 数据结构
- 栈,队列,链表,二叉树
- 重点:链表+二叉树
- 深度遍历
- 广度遍历
- 计算机的内存相关
- 算法
- 二分查找,选择排序,冒泡排序,插入排序,希尔排序,快速排序
- 使用两个队列实现一个栈
- 链表
- 节点的封装
- item:保存数据值
- next:保存下一个节点的地址
- 链表封装
- head = 链表表中第一个节点的地址
- 指向:如果一个引用保存了某一块内存空间的地址,则表示该引用指向这块内存空间。next = Node()
- 链表节点指向翻转或者链表倒置:
- 节点的封装
- 二叉树
- 广度遍历:逐层从上到下遍历
- 深度遍历:子树
- 前序:跟左右
- 中序:左跟右
- 后序:左右跟
- 排序二叉树:插入节点的时候,比根节点小的节点插入到左侧,大的插入到右侧。
- 好处:中序遍历作用到排序二叉树中,遍历的结果就是一个有序集合
- 二分查找:只可以作用在有序集合中
- 冒泡
- 1.可以将序列中的元素两两比较,将每两个元素中较大的值逐一向尾部偏移,最终偏移到序列的末尾。
- 2.将步骤一的操作重复执行n-1次,可以将n-1个最大值找出放置到子序列的末尾。序列就变成有序集合了。
- 选择
- 1.元素两两比较,最终找到最大值,直接将最大值和序列最后一个元素交换位置。最大元素放置在序列末尾位置。
- 2.将步骤一的操作重复执行n-1次,可以将n-1个最大值找出放置到子序列的末尾。序列就变成有序集合了
- 插入排序
- 假设将一个序列拆分成两部分:
- 有序部分:默认情况下,序列的第一个元素作为有序部分的第一个元素
- 无序部分:除了第一个元素剩下的元素默认作为无序部分的元素
- 假设将一个序列拆分成两部分:
- 需要将无序部分的每一个值,以此插入到有序部分合适的位置即可。
- 希尔排序
- 插入排序就是增量gap为1的希尔排序
- 引入了概念叫做增量gap
- 1.gap表示对原始序列分组的组数
- 2.gap表示每一组中数值于数值之间的间隔
- 快排
- 基数:默认情况下,乱序序列的第一个数值作为基数。
- 将序列的每一个数值和基数比较,比基数大的数值统一放置在基数右侧,比基数小的数值统一放在基数左侧。
- 在原始序列中需要使用两个变量(low,high)分别指向序列的起始位置。首先先偏移h在偏移l。
- 可以使用递归将上述操作进行重复执行,知道low>high结束递归
每天进步一点点

浙公网安备 33010602011771号