算法-第四版
文章平均质量分 71
TinyDolphin
这个作者很懒,什么都没留下…
展开
-
背包、队列和栈
背包、队列和栈什么是背包?队列?栈?使用它们的目的?什么时候使用它们?怎么实现它们?(一些问题及其优化方案)链表的性能特点1、什么是背包?队列?栈?它们是三种不同的数据类型。①、背包:一种不支持从中删除元素的集合数据类型 ②、队列(又称“先进先出队列”):一种基于先进先出(FIFO)策略的集合数据类型 ③、栈(又称“下压栈”):一种基于后进先出(LIFO)策略的集合数据类型2、使用原创 2017-05-08 23:13:41 · 566 阅读 · 0 评论 -
算法优化的神奇效果
算法优化的神奇效果增长数量级的分类2-sum问题(热身)3-sum问题(快速算法)1、增长数量级的分类2、2-sum问题(热身)它是3-sum的简化问题:即找出一个数组中所有的和为0的整数对的数量。一般的解决方案如下:/** * 2-sum问题:统计和为0的整数对的数目(平方级别) * 时间复杂度:N² * @param arr * @return */public static原创 2017-05-12 13:04:04 · 2428 阅读 · 0 评论 -
二分查找
二分查找二分查找与一般查找相比,为什么要快?二分查找的实现原理是什么?二分查找的具体实现以及实力应用二分查找的扩展(面向对象的程序设计)二分查找与一般查找相比,为什么要快?一般查找算法(从头到尾依次比较)public static int rank(int key , int[] arr){ for(int index = 0 ; index < arr.length ; inde原创 2017-05-06 22:44:56 · 1250 阅读 · 0 评论 -
排序算法类的模板
以下是数组排序实现的框架。这段代码是我们的排序方法适用于任意实现了 Comparable 接口的数据类型。先说说几个对于所有排序算法都很重要的问题: ①、验证: 推荐在测试代码中添加一条语句 assert isSort(arr); 来确认排序后数组元素都是有序的。 ②、运行时间: 要评估算法的性能。首先,要计算各个排序算法在不同的随机输入下的基本操作的次数(包括比较和交换,或者是读写数组的次数)原创 2017-05-14 20:01:06 · 736 阅读 · 0 评论 -
选择排序及其优化方案
选择排序基本思想运行轨迹代码实现性能分析优化方案1、基本思想这是一种思路最简单的排序算法。①、找到数组中最小的那个元素 ②、将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换) ③、在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置 ④、重复执行③,直到将整个数组排序。为什么叫选择排序?就是因为它在不断地选择剩余元素之中的最小者。2、运行轨迹3、原创 2017-05-14 21:19:20 · 1825 阅读 · 0 评论 -
插入排序及其优化方案
插入排序基本思路运行轨迹代码实现性能分析优化方案1、基本思路正如生活中整理扑克的方法:一张一张的来,将每一张牌插入到其他已经有序的排中的适当位置。在计算中实现? 为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。与选择排序的相同点:当前索引左边的所有元素都是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。当索引到达数组的右端时,数组原创 2017-05-26 20:54:34 · 979 阅读 · 0 评论 -
希尔排序及其优化方案
希尔排序基本思路运行轨迹代码实现性能分析优化方案1、基本思路什么希尔排序? 一种基于插入排序的快速的排序算法。希尔排序为了加快速度简单的改进了插入排序,交换不相邻的元素 以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。(局部有序的数组很适合插入排序)希尔排序的思想? 使数组中任意间隔为 h 的元素都是有序的。这样的数组被称为 h 有序数组,也就是说:一个 h 有序数组就是原创 2017-05-30 22:37:37 · 2093 阅读 · 1 评论