/* * dianlubuxian.java * Version 1.0.0 * Created on 2017年11月30日 * Copyright ReYo.Cn */ package reyo.sdk.utils.test.dy; /** * <B>创 建 人:</B>AdministratorReyoAut <BR> * <B>创建时间:</B>2017年11月30日 下午4:58:56<BR> * * @author ReY…
近来有些朋友在做蜘蛛算法,或者在网页上面做深度的数据挖掘.但是遇到复杂而繁琐的html页面大家都望而却步.因为很难获取到相应的数据. 最古老的办法的是尝试用正则表达式,估计那么繁琐的东西得不偿失,浪费我们宝贵的时间. 第二个办法用开源组织htmlparser的包,这个是一个比较老的项目,但是效果估计不是很好,好像不可以深入分析html,只能分析5级的结构: 我这里有个htmlparser的源代码,可以获取所有的超链接的 /* * To change this template, choose T…
目录 汇总 1. 冒泡排序 2. 选择排序 3. 插入排序 4. 快速排序 5. 归并排序 6. 希尔排序 6.1 希尔-冒泡排序(慢) 6.2 希尔-插入排序(快) 7. 堆排序 8. 计数排序 9. 桶排序 10. 基数排序 11. 使用集合或 API 11.1 优先队列 11.2 Java API 最后 汇总 序号 排序算法 平均时间 最好情况 最差情况 稳定度 额外空间 备注 相对时间 1 冒泡算法 O(n2) O(n) O(n2) 稳定 O(1) n 越小越好 182 ms 2 选择算…
算法一:分治法 基本概念 1.把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并. 2.分治策略是对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解. 适用情况 1)该问题的规模缩小到一定的程度就可以容易地解决 2)该问题可以分解为若干个规模较小的…
快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 算法思想 先从数列中取出一个数作为基准数. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 再对左右区间重复第二步,直到各区间只有一个数. 算法实现 package…
ID3算法java实现 1 ID3算法概述 1.1 信息熵 熵是无序性(或不确定性)的度量指标.假如事件A的全概率划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn).那信息熵定义为: 通常以2为底数.所以信息熵的单位是bit. 1.2 决策树 决策树是以实例为基础的归纳学习算法.它从一组无次序.无规则的元组中推理出决策树表示形式的分类规则.它採用自顶向下的递归方式.在决策树的内部结点进行属性值的比較,并依据不同的属性值从该结点向下分支,叶结点是要学习划分的类.从根…
在前面复习了三个简单排序Java数据结构和算法(三)--三大排序--冒泡.选择.插入排序,属于算法的基础,但是效率是偏低的,所以现在 学习高级排序 插入排序存在的问题: 插入排序在逻辑把数据分为两部分,左边:数据是有序的,右边:数据是无序的 上图中的元素2,是最小的数据,但是在最右边,我们需要和之前的元素进行比较,然后每个元素都要后移,直到找到应该插入的位置,这里 对于元素2来说,所有的元素都要后移一位 这个过程将近存在N次复制,移位的次数平均N/2,所以执行效率是O(N^2) 所以如果能以某种…
栈: 英文名stack,特点是只允许访问最后插入的那个元素,也就是LIFO(后进先出) jdk中的stack源码: public class Stack<E> extends Vector<E> { //继承Vector,Vector和ArrayList几乎相同,都是通过数组保存数据,只不过方法有Synchronized修饰 public Stack() { } public E push(E item) { //push,也就是add,把数据保存得add到数组的末尾 addEle…
什么是树? 上面图例就是一个树,用圆代表节点,连接圆的直线代表边.树的顶端总有一个节点,通过它连接第二层的节点,然后第二层连向更下一层的节点,以此递推 ,所以树的顶端小,底部大.和现实中的树是相反的,但是代码一般从顶点开始执行操作 本文会讲述一种特殊的树--二叉树,每个节点最多有两个子节点.普通的树,节点可以多于两个,称为多路树/多叉树 树的术语: 1.路径:顺着节点的边从一个节点走到另一个节点,所经过的节点的顺序排列就称为“路径” 2.根:树顶端的节点称为根.一棵树只有一个根,如果要把一个节点…