hexo-blog测试
一个普通的博客测试网站
12.哈希算法 12.哈希算法
哈希算法哈希算法是指将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。 要设计一个优秀的哈希算法需要满足的几点要求: 从哈希值不能反向推导出原始数据(所以哈希算
2019-11-09 小小明
11.散列表 11.散列表
散列表散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。散列表两个核心问题是散列函数设计和散列冲突解决。散列冲突有两种常用的解决方法,开放寻址法和链表法。散列函数设计的好坏决定了散列冲突
2019-11-09 小小明
10.跳表 10.跳表
跳表=链表+多级索引跳表使用空间换时间的设计思路,通过构建多级索引来提高查询的效率,实现了基于链表的“二分查找”。跳表是一种动态数据结构,支持快速的插入、删除、查找操作,时间复杂度都是 O(logn)。 跳表的空间复杂度是 O(n)。跳表的
2019-11-09 小小明
09.二分查找 09.二分查找
二分查找二分查找的思想二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区
2019-11-09 小小明
07.排序 07.排序
排序算法最常用的排序算法: 冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。 按照时间复杂度可分为三类: 排序算法 时间复杂度 是否基于比较 冒泡、插入、选择 $O(n^2)$ Y 快排、归并
2019-11-09 小小明
06.递归 06.递归
如何理解“递归”?递归是一种非常高效、简洁的编码技巧,不过递归代码也比较难写、难理解。编写递归代码的关键就是不要把自己绕进去,正确姿势是写出递推公式,找出终止条件,然后再翻译成递归代码。 不过递归代码也比较难写、难理解。编写递归代码的关键就
2019-11-09 小小明
05.队列 05.队列
队列的结构可以把队列想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。 队列最大的特点就是先进先出,主要的两个操作是入队和出队。跟栈一样,它既可以用数组来实现,也可以用链表来实现。用数组实现的叫顺序队列,用链表实现的叫链式队列。特
2019-11-09 小小明
02.数组 02.数组
02.数组数组是一种最基础的数据结构,在大部分编程语言中,数组都是从 0 开始编号的。 线性表与非线性表线性表(Linear List),就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向,包括数组,链表、队列、栈等。
2019-11-09 小小明
01.入门篇 01.入门篇
01.入门篇数据结构&算法的定义从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。 图书管理员为了方便查找,一般会将书籍分门别类进行“存储”。按照一定规律编号,就是书籍这种“数据”的存储结构。 查找一本书有很
2019-11-09 小小明
十、计算机网络 十、计算机网络
第 5.1 节 计算机网络概述网络的网络网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 ISP互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或
2019-11-06 小小明
三、Java 集合 三、Java 集合
集合框架3.1 接口常见接口 Map 接口和 Collection 接口是所有集合框架的父接口; Collection 接口的子接口包括:Set 接口、List 接口和Queue接口; Map 接口的实现类主要有:HashMap、TreeM
2019-11-06 小小明
二、设计模式 二、设计模式
设计模式2.1 设计原则单一职责原则 不要存在多于一个导致类变更的原因。 总结:一个类只负责一项职责。里氏替换原则 1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 2.子类中可以增加自己特有的方法。 3.当子类的方法重载父类的
2019-11-06 小小明
2 / 3