三、堆排序(Heapsort) 优先队列可以用于O(N log N) 存储空间增加一倍 排序类别 排序方法 时间复杂度 时间复 杂度 空间复杂度 稳定性 复杂性 平均情况 最坏情况 最好情况 选择排序 堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 较复杂 堆排 ...
分类:
编程语言 时间:
2019-03-25 10:31:01
阅读次数:
177
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出。 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几 ...
分类:
编程语言 时间:
2019-03-21 00:49:52
阅读次数:
228
快速排序比选择排序要快得多,采用分而治之的思想,具体实现是用递归。 1. 基线条件 数组为空或只包含一个元素 2. 递归条件 将数组分解,直到满足基线条件 3. 工作原理 4. 代码实现 5. 合并排序和选择排序 这里要说一下合并排序,运行时间为O(n log n)。而快速排序在最糟糕的情况下的运行 ...
分类:
编程语言 时间:
2019-02-28 15:03:57
阅读次数:
211
时间复杂度、空间复杂度、稳定性比较 | 排序方法 | 平均情况 | 最好情况 | 最坏情况 | 辅助空间 | 稳定性 | | | | | | | | | 插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 | | 希尔排序 | O(n log(n))~O(n^2) | ...
分类:
编程语言 时间:
2019-01-25 13:02:40
阅读次数:
224
符号表 符号表是键值对的集合,支持给定键查找值的操作,有很多应用: API put() 和 get() 是最基础的两个操作,为了保证代码的一致性,简洁性和实用性,先说下具体实现中的几个设计选择。 泛型 我们在考虑方法时不指定在处理的键和值的类型,而是使用泛型。 重复的键 每个键只对应一个值(表里没有 ...
分类:
其他好文 时间:
2019-01-22 18:38:10
阅读次数:
204
参考:https://blog.csdn.net/baoli1008/article/details/48059623 注:下文中,’n’代表容器中元素的数量,’k’代表参数的值,或者参数的数量。 1.列表(list) 以完全随机的列表考虑平均情况。 列表是以数组(Array)实现的。 最大的开销发 ...
分类:
编程语言 时间:
2019-01-10 18:49:39
阅读次数:
617
垃圾回收机制,共享变量,线程栈,cas 集合类底层(arraylist扩容问题,hashmap,concurrenthashmap) mysql引擎,b+树 tcp三次握手四次挥手,https建立连接过程 cookie和session,浏览器cookie禁用后能否用session,不同域名间是否可以 ...
分类:
其他好文 时间:
2018-12-17 02:43:09
阅读次数:
216
如何实现随机访问? 线性表:数组,队列,链表,栈 非线性表:树,图 总结:数组用一块连续的内存空间,来存储相同类型的一组数据,最大的特点就是支持随机访问,但插入,删除操作也因此变得比较低效,平均情况时间复杂度未O(n).在平时的业务开发种,我们可以直接使用变成语言提供的容器类,但是,如果是特别底层的 ...
分类:
编程语言 时间:
2018-11-17 21:02:41
阅读次数:
143
四个复杂度分析: 1:最好情况时间复杂度(best case time complexity) 2:最坏情况时间复杂度(worst case time complexity) 3:平均情况时间复杂度(average case time complexity) 4:均摊时间复杂度(amortized ...
分类:
其他好文 时间:
2018-11-17 19:26:35
阅读次数:
177
排序原理 原理很简单,如果数组不是有序的,就洗一次牌,直至数组有序为止 时间复杂度 最佳情况O(n),平均情况O(n×n!) 代码如下: ...
分类:
其他好文 时间:
2018-11-08 23:25:19
阅读次数:
371