
数据结构与算法
nsn_huang
本科 计算机科学与技术 2017级
展开
-
[数据结构与算法-理论] Hash表
文章目录1. 概念1) Hash表2) Hash函数2. Hash冲突1) 必然发生Hash冲突2) Hash函数的要求3) 解决Hash冲突(1) 开放寻址法1. 线性探测2. 二次探测3. 双重散列(哈希)(2) 链表法3. Hash表扩容1. 概念1) Hash表Hash表也叫哈希表、散列表,(我的理解)它是一种特殊的数组。数组是支持随机访问的一种数据结构,我们可以根据下表直接访问内容...原创 2020-01-17 21:59:29 · 745 阅读 · 0 评论 -
[数据结构与算法-理论]二分查找
文章目录1. 二分查找2. 查找第一个值等于给定值的元素3. 查找最后一个值等于给定值的元素4. 查找第一个大于等于给定值的元素5. 查找最后一个小于等于给定值的元素1. 二分查找public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; // 注意循环条件 whi...原创 2019-12-24 16:58:11 · 333 阅读 · 2 评论 -
[排序算法]桶排序、计数排序、基数排序
上一篇:[排序算法]归并排序、快速排序文章目录1. 桶排序1) 时间复杂度2) 桶排序不是原地排序算法3) 桶排序可以是稳定算法2. 计数排序1) 时间复杂度2) 计数排序不是原地排序算法3) 计数排序是稳定算法3. 基数排序4. 总结1. 桶排序桶排序首先要求我们对数据大概分布有一个了解。比如按照用户的年龄排序,假设用户年龄分布在0-120岁之间,我们可以想象有12个桶,分别存放0-10...原创 2019-12-24 14:40:35 · 515 阅读 · 0 评论 -
[排序算法]归并排序、快速排序
上一篇:[排序算法]冒泡排序、插入排序、选择排序文章目录1. 归并排序1) 时间复杂度2) 归并排序不是原地算法3) 归并排序是稳定算法2. 快速排序1) 时间复杂度2) 快速排序是原地算法3) 快速排序不是稳定算法3. 总结1. 归并排序// 归并排序使用了分治的思想,首先分,缩小数据规模,然后再将部分结果合并起来public void mergeSort(int[] a) { ...原创 2019-12-21 13:40:04 · 672 阅读 · 3 评论 -
[排序算法]冒泡排序、插入排序、选择排序
文章目录1. 排序算法要关注哪些问题1) 复杂度(1) 时间复杂度(2) 空间复杂度2) 稳定性2. 冒泡排序1) 时间复杂度2) 冒泡排序是原地算法3) 冒泡排序是稳定算法3. 插入排序1) 时间复杂度2) 插入排序是原地算法3) 插入排序是稳定算法4. 选择排序1) 时间复杂度2) 插入排序是原地算法3) 插入排序不是稳定算法5. 总结1. 排序算法要关注哪些问题1) 复杂度对于算法,我...原创 2019-12-19 19:00:04 · 1268 阅读 · 6 评论 -
[数据结构与算法-理论] 时间复杂度
1. 如何衡量代码质量?计算机两个核心的功能就是计算和存储,所以我们衡量代码也是从这两个角度,一个是计算时耗费的时间,一个是计算时使用的存储空间(这里指使用的内存大小)。比较直观的方法就是,运行一下,跑一跑就知道了。占用了多少内存,耗费了多少时间,统计一下,既直观又准确。这种方法不是不可以,只是受运行环境和数据规模影响比较大,参考性很难统一。所以,我们引入了大O表示法,可以在不运行的情况下,...原创 2019-12-18 16:10:33 · 260 阅读 · 0 评论