算法
段雪锋
这个作者很懒,什么都没留下…
展开
-
凸包扫描算法过程
1.预处理存储在P[0:m]中,以纵坐标最小的点P[0]为极点,水平方向为极轴,按照极角大小给点排序。如果极角相等,只留下距极点较远的点;2.将p[0]、p[1]、p[2]依次压入栈Q,对于剩余的点依次判断栈顶元素p[q]是否位于p[0]、p[i]和p[next]构成的三角形内,如果在三角形内,说明p[q]不是凸包的顶点,则弹出p[q],继续扫描;否则压入p[next],继续处理p[next+1]...原创 2018-05-08 20:37:40 · 199 阅读 · 0 评论 -
java动态规划最长公共子序列
//主体思想: //如果a[i]=a[j],子序列必还有a[i],继续求解a[i-1]和b[j-1]的问题 //如果不相等,取a[i]和b[j-1],a[i-1]和b[j]较大的一个子序列 package LongestSubsequence; import java.io.FileInputStream; import java.io.FileNotFoundException; impor...原创 2018-05-09 16:02:39 · 365 阅读 · 0 评论 -
贪心算法
①贪心算法总选择当前最佳策略,一般而言,仅获得问题的一个可行解。它放弃了搜索整个解空间,但提高了算法效率。②贪心与动态规划均要求问题具有优化子结构; 动态规划要求具有重叠子问题,贪心要求具有贪心选择性;子问题空间较大时,贪心选择与其它子问题无关,贪心效率高。...原创 2018-05-09 21:20:03 · 219 阅读 · 0 评论 -
java-最小生成树
可解决的实际问题:用最小的代价建立局域网。原创 2018-05-09 21:24:43 · 272 阅读 · 0 评论 -
快速排序-java
为了解决凸包问题,尽量降低时间复杂度,写了一个快速排序算法。此快排算法的主要过程是:1.选择数组第一个数作为基准X2.从右往左找第一个比X小的数,放到X所在的位置,留出一个空3.从左往右找第一个比X大的数,放在刚才空出的位置,留出一个空4.从右往左找第二个比X小的数,放到上一个空位置,再次留出一个空5.如此循环,直到左右相遇,把X放在最后一个空位6.此时,X左边都是比X小,右边都比X大,对左右两边...原创 2018-04-28 16:27:15 · 131 阅读 · 0 评论