![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法知识
krauser1991
逆水行舟 不进则退
展开
-
二分法
二分法必须操作有序的元素列表最多查询log2N次/** * @author: krauser * @date: Create in 下午6:13 2017/12/27 * @Description: 二分法 最多查询次数log2N次 * log((double)N)/log((double)m) */public class DichotomyTest { /**原创 2017-12-27 18:31:52 · 214 阅读 · 0 评论 -
数组和链表的理解和运行时间分析
说一下存储数据的二种基本方式:数组和链表内存结构:数组和链表的原理:数组会先在内存中分配空间,插入和删除元素,都会造成其它元素的重新排列,当然插入元素可以通过预留空间来处理,但是这样会造成内存的浪费,如果预留空间不够,你还是需要重新分配空间。链表会在内存中存入元素和指向下一个存储内存的地址,可以分布在内存任意地址。运行时间的差异:数组的运行时原创 2017-12-27 19:55:55 · 766 阅读 · 0 评论 -
选择排序
选择排序每次查找元素的最大值/最小值。运行时间是n*n-1*n-2...*2*1 即O(n2),忽略常量/** * @author: krauser * @date: Create in 下午10:07 2017/12/27 * @Description: 选择排序 * * 运行时间N*(n-1)...*2*1 * 大O写法 O(n2) 省略了常数 */public原创 2017-12-27 23:02:21 · 214 阅读 · 0 评论 -
快速排序
快速排序,先找到对比数据,然后遍历其它元素,大于对比数据的放到more集合,小于对比数据的放到less集合,再对more集合和less集合排序最大运行时间O(n2)平均运行时间O(nlogn)数据量很大的情况下,快速排序是灾难性的,数据量小的情况下,效率很高/** * @author: krauser * @date: Create in 上午11:48 2017/12/2原创 2017-12-28 12:28:46 · 181 阅读 · 0 评论 -
散列表
散列表就是数组+链表的模式,可以用于快速查找,缓存,避免重复冲突,如果发生冲突,运行时间会是O(n),但是避免了冲突,运行时间则会是O(1),所以我们应该尽量避免冲突。如何避免冲突:较低的填装因子,正常0.7为最佳良好的散列函数原创 2017-12-28 16:54:01 · 203 阅读 · 0 评论 -
广度优先搜索
运行时间O(V + E) V是节点数,E是边数广度优先搜索解决路径是否存在以及路径最短问题。类似于路径最短问题,可以使用图来建模型,再使用广度优先搜索。图包含了有向图和无向图。有向图中的边为箭头,箭头的方向指定了关系的方向。无向图不带箭头,关系是双向的。队列是先进先出/栈是后进后出。因为要找到最短路径,所以要按照顺序处理搜索的元素,所以搜索列表必原创 2017-12-28 18:48:45 · 209 阅读 · 0 评论 -
Python实现排序算法(冒泡、插入、选择、希尔、归并、快速)
#!/usr/bin/python# -*- coding:UTF-8 -*-import randomdef genList(length): ''' 生成指定长度的列表 ''' # print random.randint(0, 1000) list = [] for i in range(length): list.a...原创 2019-02-16 19:53:50 · 342 阅读 · 1 评论