算法——分析
文章平均质量分 72
Star_Ship
方向确定,继续前进。
展开
-
排序算法——快速排序的图解、代码实现以及时间复杂度分析
快速排序在C++的泛型排序中,拷贝对象需要很大的开销,而比较对象常常是相对省时的(编译器的自动优化)。在这种情况下,如果我们能够使用更少的数据移动,那么有理由让一个算法多使用一些比较。而快速排序(Quicksort)满足了这种特点,实际上C++中通常所使用的排序例程就是使用的快速排序。 快速排序也是一种分治的递归算法。它的平均运行时间是O(NlogN),最坏情形性能为O(N2)。经典快速排序将数组原创 2018-02-26 13:19:33 · 3103 阅读 · 0 评论 -
LinkedHashMap与LRU——来自源码的启示
LinkedHashMap是什么?public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>LinkedHashMap是HashMap的扩展,它根据元素的插入顺序或者访问顺序(accessOrderd属性指定),使用双向链表,将所有元素连接起来,使得对HashMap的遍历变得有序。 示意图如下:原创 2018-04-06 13:43:29 · 376 阅读 · 0 评论 -
关于常见排序算法的归纳总结以及思考解答
该文章转载自:https://blog.csdn.net/jianyuerensheng/article/details/51263709常用排序算法的复杂度分析整理 具体分析如下:1 冒泡排序(BubbleSort)冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。...转载 2018-03-31 11:05:15 · 639 阅读 · 0 评论 -
腾讯2018春招模拟——编程题1——4个点能否构成正方形
题目 判断输入的4个点是否构成正方形 输入t组数据,每组数据包含两行,一行是4个点的横坐标,一行是4个点的纵坐标 示范输入: 2 0 0 1 1 0 1 0 1 0 1 5 6 1 6 0 5 示范输出: Yes Yes我的思路判断任意3个点是否构成等腰直角三角形,如果是,则为正方形。public class...原创 2018-03-23 22:58:47 · 1179 阅读 · 3 评论 -
《剑指offer》Java实现——每天9题——第4天
面试题28 对称的二叉树 请实现一个函数,用来判断一颗二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。测试用例功能测试(对称的树;因结构而不对称的二叉树;结构对称但节点值不对称的二叉树)特殊值测试(树为null;树只有一个根节点;所有节点值都相同的树)实现代码/** * 入口方法,负责进行参数校验和递归调用 * @p...原创 2018-03-05 21:14:49 · 395 阅读 · 0 评论 -
《剑指offer》Java实现——每天9题——第3天
面试题19 正则表达式匹配 请实现一个函数用来匹配包含’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串“aaa”与模式“a.a”和“ab*ac*a”匹配,但与“aa.a”和“ab*a”均不匹配。测试样例功能测试(模式字符串里包含普通字符、’.’、’*’;...原创 2018-03-04 21:16:10 · 427 阅读 · 0 评论 -
《剑指offer》Java实现——每天9题——第2天
面试题10 斐波那契数列 题目一:求斐波那契数列的第n项。写一个函数,输入n,求斐波那契数列的第n项。测试用例功能测试(如输入3、5、10)边界值测试(如输入0,1,2)性能测试(输入较大的数字,如40、50、100等)实现代码/** * 求斐波拉契数列的第n项。 * @param n 第n项 * @return 第n项的值 */ pub原创 2018-03-03 22:18:08 · 449 阅读 · 0 评论 -
《剑指offer》Java实现——每天9题——第1天
面试题1 赋值运算符函数该题目涉及到c++语言的指针特性,java语言暂没想出解决方案。面试题2 实现Singleton模式 设计一个类,我们只能生成该类的一个实例。实现代码 public class LazyLoadedSingleton{ private LazyLoadedSingleton{} //private构造方法,防止外部实例化...原创 2018-03-02 20:47:32 · 1654 阅读 · 0 评论 -
《剑指offer》Java实现——每天9题——第6天
面试46 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“l”,……,25翻译成“z”。一个数字可能有多个翻译。例如,12258有5种翻译,分别是“bccfi”、“bwfi”、“bczi”、“mcfi”和“mzi”。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。测试用例功能测试(只有1位数字...原创 2018-03-09 09:39:23 · 475 阅读 · 1 评论 -
《剑指offer》Java实现——每天9题——第5天
面试题37 序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树测试用例功能测试(树有多个节点;树只有一个节点;每个节点只有左子树或者右子树;反序列化时序列为空,或者null)特殊值测试(树为空)实现代码//一个全局的计数变量,用于反序列化计数 private static int index=0; /** * 序列化...原创 2018-03-06 22:41:07 · 367 阅读 · 0 评论 -
3种缓存淘汰算法LFU、LRU和LRU-K
本文章转载自:https://blog.csdn.net/jake_li/article/details/506598681. LFU1.1 原理LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。1.2. 实现LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的转载 2018-04-05 21:45:56 · 4206 阅读 · 0 评论