![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java算法与数据结构
文章平均质量分 80
我是问月啊
brabra
展开
-
java归并排序及实现
归并排序:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。 归并排序基本思想设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列原创 2017-02-21 11:41:49 · 513 阅读 · 1 评论 -
java实现分治法,求平面内最近点对
算法分析:方法一:穷举1)算法描述:已知集合S中有n个点,一共可以组成n(n-1)/2对点对,蛮力法就是对这n(n-1)/2对点对逐对进行距离计算,通过循环求得点集中的最近点对2)算法时间复杂度:算法一共要执行 n(n-1)/2次循环,因此算法复杂度为O(n2)代码实现:利用两个for循环可实现所有点的配对,每次配对算出距离然后更新最短距离.方法二:分治 在二维原创 2017-02-21 14:46:56 · 4692 阅读 · 1 评论 -
java实现最大堆及代码测试
算法分析:堆排序和归并排序一样,实践时间复杂度是O(nlgn),不同于归并排序的是,堆排序是一种原址排序。本文介绍最大堆。代码中关键操作:maxHepify:时间复杂度是O(lgn),是维护堆性质的关键。buildMaxHeap:建立最大堆,时间复杂度是O(n);heapSort:通过调用exactMax,按顺序得到一个排序的数组,时间复杂度是O(nlgn);insert:原创 2017-02-23 20:36:16 · 365 阅读 · 0 评论 -
java,动态规划,算法导论之钢条切割(O(n)时间渐进性)
动态规划总结:动态规划用于处理具有最优子结构,子问题重叠且互不相关的情况。由于子问题有所重叠,故此,为节省运行时间,每个子问题只求一次,通过“自顶向下带备忘录法”或“自底向上迭代法”来记录和应用已求得结果的子问题。能把递归结构次数从指数次降低到多项数次,使问题能快速求解。动态规划和分治法把大问题化成小问题思想有点类似,却又有不同,分治法的子问题没有重叠。思想步骤:1、分析最优子结构原创 2017-03-04 12:55:39 · 590 阅读 · 0 评论 -
java双向循环链表分析及其实现
ArrayList和LinkedList比较分析:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。4.Arra原创 2017-02-26 16:12:46 · 1395 阅读 · 0 评论