随笔分类 - 【40】数据结构和算法
摘要:Json 已成为当前服务器与 web 应用之间数据传输的公认标准。 微服务及分布式架构经常会使用 Json 来传输此类文件,因为这已经是 webAPI 的事实标准。 不过正如许多我们习以为常的事情一样,你会觉得这是理所当然的便不再深入比较。 我们很少会去想用到的这些 Json 库到底有什么不同,但事
阅读全文
摘要:他山之石,可以攻玉。 -------(诗经小雅鹤鸣) 练练看是一款非常有意思的游戏,在光棍节的时候记得玩连连看。 看到屏幕上面一对一对的被消掉,呵呵,心里那感觉就······。 花了几段小的时间来关注了其中的代码实现。 可以引进 二维数组相应下标记录按钮(图标)的位置,索引值存储“0” 即按钮为空;
阅读全文
摘要:只有比别人更早、更勤奋地努力,才能尝到成功的滋味。 ------麦克马斯特大学训言 记得之前总结过插入排序,有兴趣的可以看看---插入排序。 如果在最复杂的情况下,所要排序的整个数列是逆序的,当第i-1趟需要将第i个元素插入前面的0~ i-1个元素的序列当中的时候,它总是会从第i-1个元素开始,逐个比较每个元素的大小,直到找到相应的位置。 这个算法中丝毫没有考虑当要插入第i个元素时前面的0~~i-1序列是有序的这个特点。今天要总结的这个算法就充分的利用了这一点。算法的基本过程: 1)计算0~i-1的中间点,用i索引处的元素与中间值进行比较,如果i索引处的元素大,说明要插入的这...
阅读全文
摘要:笔试题目当中,找素数出现的几率有点大。昨天就做了一个,感觉不是很难,但可以考查程序员的数学和编码功底。 用嵌套循环来实现是很理想的,怎样减少循环的次数?怎样求出小于N的所有质数? 不可能将一个数除与所有小于它的数字,只要检查到N的平方根就好了。但直接开根号还有个精度的问题。这个可能会产生误差。 索性将判断条件写成 i*i<=N ,道理也是很简单的 i 大于N 的平方根,在检查 第一个 i 除数 N 之前可以先检查 小于第二个 i 是否可以 整除 N。 下面自己敲的求素数: import java.util.ArrayList;public class Prime { pub...
阅读全文
摘要:// 测试二叉树遍历,递归算法 public class TestBinaryTree { public static void main(String[] args) { Node<String> g = new Node<String>("G", null, null); Node<String> e = new Node<String>("E", null, null); Node<String> f = new Node<String>("F", null
阅读全文
摘要:“给定一个字符串,找出这个字符串中出现最多的字符和次数”,笔试碰到的一个问题,还是比较简单的,贴出来与大家分享。 上面的这算法当中有两个for 的嵌套循环 还有一个 for 循环的得到次数最多字符的操作。时间复杂度也不难得到是O(n^2). 如果遇到数据量比较大的,上述这个算法还是有点不尽人意。 如
阅读全文
摘要:RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。 这个算法的名字也是他们三个人名字首字母,RSA算法基于一个十分简单的数论事实: 将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密
阅读全文
摘要:聪明出于勤奋,天才在于积累。——华罗庚 先说下插入排序实现过程: 对要排序的数组,逐个进行处理,与前面的子序列进行比较,让它插入到合适的位置。时间复杂度: 某一个模块的函数f()的增长率越小,整个程序执行时间增长率就越小,注意这个里面是指的是函数的增长率就是所说的时间复杂度。它是衡量算法好坏的标准之一,时间复杂度越小,算法的效率越高。 现在的电脑都可以满足小程序所需要的内存,如果遇到比较大的数据群,换台更大点的电脑不实际,优化算法才是最合适的选择。插入排序的时间复杂度是Ο(N^2): 这个很早就知道但是它是怎们来的纳?今天花了点时间,琢磨了一下,不仅仅是翻到了《数据结构与算法》...
阅读全文