![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
「已注销」
找自己的生活味道。
展开
-
(一)算法与数据结构|算法复杂度分析
定义: 最好情况 最坏情况 平均情况 均摊情况 时间复杂度 主要执行一次 执行全部 每种情况执行次数乘对应情况出现概率的积相加 特殊的平均情况 空间复杂度 / / / / 在执行时临时变量申请的内存大小 ...原创 2019-03-15 16:47:09 · 150 阅读 · 0 评论 -
(二)算法与数据结构|排序算法|常见排序思想总结
1 冒泡排序、插入排序、选择排序 适合小数据规模排序。 1.1 冒泡排序思想: 如排序数组,从数组索引0开始,数组相邻元素比较,若前者大于后者则交换位置;继续将此元素重复前面比较、交换操作。最后得升序数组。 1.2 插入排序思想: 把要排序的序列分为:已排序区、未排序区,已排序区只有数组索引为0的元素,已排序区有剩余元素。然后取未排序元素在已排序区查找合适的插入位置保证已排序区一直有序。重复此过程...原创 2019-03-15 17:30:41 · 186 阅读 · 0 评论 -
(三)算法与数据结构|查找算法|二分查找
二分查找: 一种针对有序数据的查找算法,也叫“折半算法”。 时间复杂度:O(logn)。(堆、二叉树的操作时间复杂度也是这个) 二分查找思想 : 查找给定值k,在有序数组a的n个元素中查找,使用二分查找。取数组中间元素a[d]和k比较,比较情况有:a[d]>k、a[d]<k,a[d]=k。若a[d]<k,从数组的子数组a[d+1]到a[n]间重复比较操作,直到a[d]=k;若a[...原创 2019-03-16 20:58:00 · 154 阅读 · 0 评论 -
(四)算法与数据结构|查找算法|类似二分查找——“跳表”结构
跳表 对数据结构中的数据常见的操作有:查找、插入、删除。有序数组的二分查找操作速度很快,但是插入、删除操作很耗时,并且对内存要求很苛刻。那么有什么数据结构能够做到查找、插入、删除操作速度都很快而且对内存要求不高呢?——答案是:跳表。 跳表是什么?即:把有序链表改造位支持“二分查找”算法,这种链表叫做跳表。 跳表的二分查找算法其实是一种“类似二分查找算法”。 跳表是一个各方面性能都比较优秀的“动态数...原创 2019-03-16 21:34:04 · 770 阅读 · 0 评论 -
(五)算法与数据结构|“散列表”结构
散列表和数组有一个相同的特性——按下标随机访问。散列表是数组的一种扩展,由数组演化而来。 散列表的下标叫键(key)或关键字。通过散列函数(也叫哈希函数、hash函数)把键转化为元素,得到的结果叫散列值(value)(也叫哈希值、hash值)。 hash(key)==>value 散列函数基本设计要求 散列函数计算得到的散列值为非负整数。因为散列值用来作为下标随机访问散列表。 若key1...原创 2019-03-16 22:12:32 · 284 阅读 · 0 评论 -
(六)算法与数据结构|应用哈希算法
哈希算法定义: 将 任意长度的二进制值串 映射成 固定长度的二进制值串。映射规则即哈希算法。 哈希算法应用: 安全加密 常用于安全加密的哈希算法有:MD5、SHA。还有DES、AES 唯一标识 如:哈希值用作数据库主键 数据校验 散列函数 哈希算法应用——分布式系统中: 负载均衡 数据分片 分布式存储——一致性哈希算法 一致性哈希算法参考:https://www.sohu.com/a/158...原创 2019-03-16 22:22:01 · 208 阅读 · 0 评论 -
(七)算法与数据结构|二叉树
树的相关概念(高度、深度、层数)图示: 二叉树图示: 定义: 二叉树 每个节点最多两个“叉(子节点)”。图中三个都是二叉树。 满二叉树 看起来是一个三角形,如二叉树图示编号2的树。 叶子节点全部在底层 除了叶子节点,所有节点都有两个子节点 完全二叉树 如二叉树图示编号3的树。 叶子节点都在最后2层 最后一层叶子节点的父节点如果只有一个节点,则只有子节点 倒数第二层的叶子点的父节点都有两个...原创 2019-03-17 13:55:12 · 224 阅读 · 1 评论 -
(八)算法与数据结构|二叉树|平衡二叉树|二叉查找树|平衡二叉查找树——红黑树
红黑树,是一棵不颜色的“平衡二叉查找树”。理解红黑树的难点在于它的插入、删除操作。原创 2019-03-18 18:53:00 · 359 阅读 · 0 评论