03 2018 档案

坐标判断正方形
摘要:由四个点的坐标判断其是否构成一个正方形 判断方法:四条边相等且两个对角线相等。 int[][] a = new int[2][4] x0 x1 x2 x3 y0 y1 y2 y3 int[] len = new int[6] 实现流程: 计算任意两个节点间的距离存入len数组中 对数组len进行排序 阅读全文

posted @ 2018-03-27 21:31 Deltadeblog 阅读(1347) 评论(0) 推荐(0)

java hashCode
摘要:hashCode是一个对象的散列码,简单的说就是通过哈希算法算出来的一大窜数字之类的东西. 如果对象1和对象2相等,说明他们的散列码相等,反过来就不一样了! hashcode可以减少equals比较的次数,提高运算效率。 哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,一般来说 阅读全文

posted @ 2018-03-27 19:50 Deltadeblog 阅读(209) 评论(0) 推荐(0)

Java HashMap原理
摘要:HashMap存储结构 HashMap中数据的存储是由数组与链表一起实现的 数组寻址非常容易,其时间复杂度为O(1),但是当要插入或删除数据时,时间复杂度就会变为O(n)。链表插入和删除操作的内存复杂度为O(1),但是寻址操作的复杂度却是O(n)。HashMap结合两者的优点,即寻址,插入删除都快。 阅读全文

posted @ 2018-03-27 19:07 Deltadeblog 阅读(160) 评论(0) 推荐(0)

上台阶问题
摘要:有n阶台阶,上楼时可以一步上1阶,也可以一步上2阶,计算共有多少种不同的上楼梯的方法。 设n阶台阶共有f(n)种不同的上楼梯方法。 因为共有两种不同的步伐,故上n阶台阶的最后一步有两种情况:从n-1阶处跨一步(上1阶),从n-2阶处跨一步(上2阶)。由此f(n) = f(n-1) + f(n-2)。 阅读全文

posted @ 2018-03-22 21:49 Deltadeblog 阅读(810) 评论(0) 推荐(0)

排序算法总结
摘要:快速排序的空间复杂度为什么是logN? 快速排序的递归代码如下: 每次递归都会返回一个中间值的位置 j , 必须使用栈存储,所以空间复杂度就是栈用的空间(栈中存储j的个数)。 j所占用栈的空间大小为 logN,这里计算栈中存储j的个数这需要考虑 递归调用 sort(a, lo, j-1) 即可,因为 阅读全文

posted @ 2018-03-18 15:22 Deltadeblog 阅读(131) 评论(0) 推荐(0)

二叉堆排序
摘要:二叉堆的内容详见上篇http://www.cnblogs.com/deltadeblog/p/8576488.html 可以利用二叉堆对数组排序,主要包含两步:将原始数组重新组织使之成为二叉堆;数组的第一个元素为最大或最小,取出后对数组使用sink()函数保持堆有序,依次进行。 堆的构造 将一个包含 阅读全文

posted @ 2018-03-17 21:10 Deltadeblog 阅读(331) 评论(0) 推荐(0)

二叉堆
摘要:二叉堆即是完全二叉树实现的堆,在二叉堆中每个节点总是大于等于其任意一个子节点。根结点是二叉堆中最大的节点。 数组实现二叉堆 完全二叉树可以用数组实现,根结点的位置为1,其子节点为2、3。位置为k的节点,其两个子节点位置为2k、2k+1 。同理,位置为k的节点,其父节点的位置为k/2 。 算法实现 使 阅读全文

posted @ 2018-03-16 16:35 Deltadeblog 阅读(383) 评论(1) 推荐(0)

快速排序
摘要:将一个数组分成两个子数组,子数组1的元素都小于等于v,子数组2的元素都大于等于v,v可取值为数组中的任意元素。 在分别对子数组进行上述排序,直到子数组的元素个数为1,整个数组排序完成。 数组切分 该算法的关键在于数组切分,即选取切分元素v,使子数组1的元素都小于等于v,子数组2的元素都大于等于v。 阅读全文

posted @ 2018-03-01 20:37 Deltadeblog 阅读(143) 评论(0) 推荐(0)

导航