自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 机器学习实战笔记(四):决策树(Python3 实现)

1 决策树的构造 1.1决策树的特点优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。缺点:可能会产生过度匹配问题。适用数据类型:数值型和标称型。    在构造决策树时,我们需要解决的第一个问题就是,当前数据集上哪个特征在划分数据分类时起决定性作用。为了找到决定性的特征,划分出最好的结果,我们必须评估每个特征。完成测试之后,原始数据集就被划分为几个数据子集。这些...

2018-05-31 23:42:04 481

原创 并查集详解

       并查集不再单独自己写Java代码实现了,看了几篇不错的文章,在此记录下。1. 数据结构--并查集的原理及实现(这篇是java语言实现)以下3篇都是转载的同一篇文章的,感觉写的挺通俗且有趣。2. 并查集详解 (转)3. 超有爱的并查集~4. 一个很有意思的并查集详解...

2018-05-22 23:43:23 196

原创 优先队列---最大堆:Java语言实现

1 堆(heap)的简单介绍       堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:a. 堆中某个节点的值总是不大于或不小于其父节点的值;b. 堆总是一棵完全二叉树。       将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆的定义如下:n个元素的序列{k1,k2...

2018-05-22 23:24:15 1511

原创 平衡二叉树——AVL树的旋转操作:Java语言实现(这篇有误, 后续会重写订正,不要再学习这篇了!!!)

1 前言 最近在研读《数据结构与算法经典问题解析》和《数据结构与算法分析 c语言描述》两本书,记录一下学习AVL树的笔记。2 平衡二叉树——AVL树的旋转操作2.1 AVL树的特点AVL树本质上还是一棵二叉搜索树,它的特点是:1.本身首先是一棵二叉搜索树。2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。也就是说,AVL树,本质上是带了平衡功能的二叉查找树(...

2018-05-21 23:34:28 3530 8

原创 二叉搜索树的插入、删除、查找等操作:Java语言实现

1 二叉搜索树介绍       二叉搜索树(BST, Binary Search Tree),也称二叉排序树或二叉查找树。二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质:1. 非空左子树的所有键值小于其根结点的键值。2. 非空右子树的所有键值大于其根结点的键值。3. 左、右子树都是二叉搜索树。2 二叉搜索树的主要操作2.1 二叉搜索树的查找操作      查找从根结点开始,如果树为空,...

2018-05-20 17:39:33 2031

原创 二叉树的非递归遍历:Java语言实现

1 前言       上一篇写了《二叉树的递归遍历:Java语言实现》,现在用java实现下二叉树的非递归遍历。2 二叉树的非递归遍历2.1 先序遍历       根据前序遍历访问的顺序,优先访问根结点,然后再分别访问左孩子和右孩子。即对于任一结点,其可看做是根结点,因此可以直接访问。访问完之后,若其左孩子不为空,按相同规则访问它的左子树;当访问其左子树时,再访问它的右子树。因此其处理过程如下:对...

2018-05-20 00:42:20 617

原创 开篇博文:万事开头难,知难而进

      第一次写博文,不知道从何说起,这才真切地感觉到了万事开头难。想想竟有了一些退缩的念头,但还是决定要知难而进,用博文的形式记录自己学习的点点滴滴以及一些思考。都说好记性不如烂笔头,随着年龄的增大,更加体会到了这一点。考虑到这个因素,更加促使我想通过博文这种记录的方式来记录自己学习的点滴。一方面是充当备忘录的功用,以备不时之需,另一方面则通过写博文来锻炼自己的语言、逻辑组织能力。除此之外,...

2018-05-19 19:01:57 233

原创 二叉树的递归遍历:Java语言实现

1 前言      所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。       由于二叉树的递归遍历相对与非递归遍历而言,形式统一,代码简单,比较容易理解。所以,本文先用Java实现二叉树的递归遍历方法。下篇博文介绍非递归遍历的实现。2 二叉树的...

2018-05-19 18:49:48 881

原创 树的定义、表示和二叉树及存储结构

1 前言       最近又看了一遍浙大的数据结构视频课程《浙江大学数据结构慕课》,感觉讲得很不错。为方便以后复习及查阅,现把树的定义、表示和二叉树及存储结构的这两节的内容以图片的形式摘录至此。2 树的定义及树的表示2.1 树的定义2.2 树的一些基本术语2.3 树的表示       由于树中的每个结点的度不统一,所以显然,首先我们想到的是结构体加链表的形式对其进行表示。       我们知道,当...

2018-05-19 16:00:32 3745

原创 基于单向链表的方法实现队列:Java语言实现

1 前言       使用单向链表也可以实现队列,通过在链表的末端插入元素的方式实现入队(EnQueue)操作,通过删除链表的表头元素实现出队(DeQueue)操作。2 基于单向链表的方法实现队列2.1 创建结点类package Queue_Study;/** * Created by Administrator on 2018/5/13. */public class LLNode {...

2018-05-13 23:51:31 383

原创 基于动态数组实现循环队列:Java语言实现

1 前言       上一篇写了《基于简单循环数组实现队列:Java语言实现》,但是一旦队列的最大空间给出,满栈后再执行入队操作将会产生溢出异常,这里采用采用动态数组的方法实现队列。2 基于动态数组实现循环队列package Queue_Study;/** * Created by Administrator on 2018/5/13. */public class DynamicArr...

2018-05-13 22:09:21 457 1

原创 基于简单循环数组实现队列:Java语言实现

1 队列的简单介绍  队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队首(front),这种操作也叫出队dequeue;允许插入的一端叫做队尾(rear)这种操作也叫入队enqueue;没有元素的队列称为“空队列”。队列具有先进先出(FIFO)的特性。1.1 普通顺序队列存在的问题  在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给...

2018-05-13 21:04:42 320 1

原创 基于单向链表的方法实现栈:Java语言实现

1 前言       使用单向链表也可以实现栈,通过在链表的表头插入的方式实现push操作,删除链表的表头结点(栈顶结点)实现pop操作。具体push操作和单向链表在链表头部添加结点的方法类似,具体pop操作和单向链表在链表头部删除结点的方法类似。大家忘记的话,可以看看我之前的文章《单向链表的基本操作: java语言实现》。2 基于单向链表的方法实现栈2.1 创建结点类package Stack_...

2018-05-13 15:48:48 1034

原创 基于动态数组的方法实现栈:Java语言实现

1 前言       上一篇写了《基于简单数组的方法实现栈:Java语言实现》,但是一旦栈的最大空间给出,满栈后再执行入栈操作将会产生溢出异常,这里采用采用动态数组的方法实现栈,用数组倍增的技术解决满栈的问题,但是需要注意的是,倍增太多可能会导致内存溢出。2 基于动态数组的方法实现栈package Stack_Study;/** * Created by Administrator on 2...

2018-05-13 14:52:57 284

原创 基于简单数组的方法实现栈:Java语言实现

1 栈的简单介绍       栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出(First In Last Out,FILO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作入栈,它是把...

2018-05-13 14:19:59 298

原创 双向循环链表的基本操作: java语言实现

1. 双向循环链表简单介绍      双向循环链表(Doubly Circular Linked List)是循环链表的一种。双向循环链表在双向链表的基础上,将表头结点的前驱指针指向尾结点,尾结点的后驱指针指向表头结点,首尾相连形成一个双向环。2 双向循环链表的基本操作2.1 创建结点类//创建一个双向链表结点类,并用get,set方法获取其数据。public class DCLLNode {...

2018-05-12 22:45:05 2969 2

原创 单向循环链表的基本操作: java语言实现

1. 单向循环链表简单介绍      单向循环链表(Singly Circular Linked List)是另一种形式的链式存贮结构。与单向链表不同,单向循环链表中没有next指针为null的结点,它的特点是表中最后一个结点的指针域指向表头结点,整个链表形成一个环。2 单向循环链表的基本操作2.1 创建结点类public class SCLLNode { private int data...

2018-05-12 20:48:35 504 2

原创 双向链表的基本操作: java语言实现

1 双向链表的简单介绍 前不久,写了一篇关于博文《单向链表的基本操作: java语言实现》,现在写一下双向链表的基本操作。与单向链表相比,双向链表多了一个前驱指针域。具体表示结构如下:previous域--存放结点的直接前驱的地址(位置)的指针域data域--存放结点值的数据域next域--存放结点的直接后继的地址(位置)的指针域 双向链表的主要优点是对于任意给的结点,...

2018-05-10 00:00:12 2695 2

原创 机器学习实战笔记(三):使用k-近邻算法的手写识别系统(Python3 实现)

完整代码及数据地址:https://github.com/cqulun123/Machine-Learning-in-Action0 使用k-近邻算法的手写识别系统的步骤 (1) 收集数据:提供文本文件。(2) 准备数据:编写函数classify0(),将图像格式转换为分类器使用的list格式。(3) 分析数据:在Python命令提示符中检查数据,确保它符合要求。(4) 训练算法:此步骤不适用于k...

2018-05-06 23:16:39 682

原创 机器学习实战笔记(二):使用 k-近邻算法改进约会网站的配对效果(Python3 实现)

完整代码及数据地址:https://github.com/cqulun123/Machine-Learning-in-Action0 问题背景介绍        我的朋友海伦一直使用在线约会网站寻找适合自己的约会对象。尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人。经过一番总结,她发现曾交往过三种类型的人: 不喜欢的人 魅力一般的人 极具魅力的人       尽管发现了上述规律,但海伦...

2018-05-06 22:17:04 1336

原创 机器学习实战笔记(一):k-近邻算法(Python3 实现)

完整代码地址:https://github.com/cqulun123/Machine-Learning-in-Action0 k-近邻算法概述         简单地说, k-近邻算法采用测量不同特征值之间的距离方法进行分类。优点:精度高、对异常值不敏感、无数据输入假定。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和标称型。工作原理       存在一个样本数据集合,也称作训练样本集,...

2018-05-06 20:26:37 477

原创 单向链表的基本操作: java语言实现

文章首发地址:知乎专栏 https://zhuanlan.zhihu.com/p/363094171 链表的简单介绍链表(Linked List)是一种链式存取的数据结构,链表中的数据是以结点来表示的。具体表示结构如下:data域--存放结点值的数据域next域--存放结点的直接后继的地址(位置)的指针域链表主要有三种:单向链表(Singly Linked List)双向链表(Doubly Lin...

2018-05-02 00:11:48 721

数据结构与算法分析第二版(英文版)

数据结构与算法分析第二版

2018-04-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除