
算法和设计模式
算法和设计模式
冷锋-
只要现在努力一切都来得及,最近暂停更
展开
-
单例模式
单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一...原创 2019-05-28 23:33:01 · 133 阅读 · 0 评论 -
工厂模式
工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。...原创 2019-05-28 18:00:15 · 114 阅读 · 0 评论 -
华为机试——进制转换(用a~z表示26进制,转换成10进制)
(1)题目描述 用英文字母a-z来分别表示数值0-25, 形成一个26进制的数值表示法。需要你写一个方法,将用a-z表示的26进制数值的字符串,转化为对应的10进制数值。(2)解题思路 1. 将字符串转换为字符数组 2. 遍历字符数组,逆序获取,从最后一位到第一位;并获取当前进制位数 3.利用Math.pow() 方法可返回 2...原创 2020-03-04 16:36:23 · 1472 阅读 · 0 评论 -
判断一个字符串中的"( )"是否配对
1.基本思想/** * 1、将字符串的每个字符进行遍历 * 2、如果发现是左括号,那么将该字符压入到栈中 * 3、如果是右括号,先去存储好的栈顶找到相应的值, * 4、若栈为空返回false,若匹配,pop该左括号,若不匹配也返回false * 5、最后检验栈中的做括号是否全部都匹配(栈最后为空),返回true,否则返回false */2.代码实现package com...原创 2020-01-14 18:00:09 · 805 阅读 · 0 评论 -
冒泡排序优化版
上一篇我们讲了冒泡排序,它需要重复的走过所有元素,并需要进行比较,直到没有交换的元素,这样导致,在很多情况下效率比较低下。比如【1,2,5,8,9,10,11,14,13】这样一组元素,第一趟就已经全部排序完成。优化方案:设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成,从而大大提高效率;程序代码(Java版):public class ...原创 2019-06-18 10:28:30 · 743 阅读 · 0 评论 -
冒泡排序
冒泡排序 时间复杂度:O(N^2)原理:重复走过需要排序的元素序列,依次比较俩个相邻的元素,如果俩个元素顺序相反则进行交换,重复地进行直到没有再需要交换的元素。稳定性:冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交...原创 2019-06-17 19:27:31 · 147 阅读 · 0 评论 -
排序算法稳定性
排序算法稳定性判定方法:假定在待排序的元素中,存在2个及以上相同的元素,若经过排序,这些元素的相对顺序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。常见排序算法的稳定性(1)冒泡排序冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在...原创 2019-06-13 11:18:02 · 547 阅读 · 0 评论 -
选择排序
冒泡排序时间复杂度:O(N^2)基本思想:每一次从待排序的数据元素中找到最小(最大)的元素,放在数据元素序列的首位;然后再从剩余元素中找到最小(最大)的元素,放在已排序元素的末尾;直到全部待排序的元素全部排序完成.通俗易懂点:从待排序的元素中选出最小的数值存放到 a[0] 中,再从剩余的未排序元素中选出最小的数值存放到 a[1] 中,a[1] 中的数字仅大于 a[0],依此类推a[2]...原创 2019-06-13 10:55:17 · 204 阅读 · 0 评论 -
哈希查找
提起哈希,Java中的Hashtable类,它是由 key/value 的键值对组成的集合,它就是应用了哈希技术。那什么是哈希查找呢?在弄清楚什么是哈希查找之前,我们要弄清楚哈希技术,哈希技术是在记录的存储位置和记录的 key 之间建立一个确定的映射 f(),使得每个 key 对应一个存储位置 f(key)。若查找集合中存在这个记录,则必定在 f(key) 的位置上。哈希技术既是一种存储方法,...原创 2019-06-03 14:38:46 · 1415 阅读 · 0 评论 -
Java实现二分查找算法,采用递归和顺序实现方式
(一) 实现原理:二分査找就是折半查找,其基本思想是:是在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次...原创 2019-05-29 14:39:33 · 2100 阅读 · 0 评论