
算法与数据结构
illikang
这个作者很懒,什么都没留下…
展开
-
将Object数组转化成完全二叉树,为树添加前序,中序和后序遍历方法
树的实现代码:import java.util.List;import java.util.Queue;import java.util.ArrayList;public class CreateTreeByArray<E> { //定义树节点和节点构造方法 public class Node<E>{ E data=null; Node...原创 2018-08-02 16:01:25 · 457 阅读 · 0 评论 -
《算法第四版》学习心得二——符号表与搜索算法
一、数据检索与符号表当信息本身不复杂的时候,不需要给数据添加索引,直接查找数据本身就可以。但是当信息本身比较复杂,比如数据是中文文本的时候,如果直接检索文本本身,检索的效率会非常低。这时,为数据添加索引,比如标题或数字序号,然后利用索引来检索文本,检索效率会有非常大的提升。于是就诞生了新的数据结构:符号表,也叫字典或map。它描述一张抽象的表格,我们会将信息(值)存储在其中,然后按照指定的...原创 2018-11-01 21:01:28 · 560 阅读 · 0 评论 -
优先队列与堆排序
一、数组实现基于堆的优先队列/*数组实现基于堆的优先队列 */public class MaxPQ<Key extends Comparable<Key>> { private Key[] pq; private int N=0; public MaxPQ(int MaxN){ pq= (Key[]) new Compar...原创 2018-10-31 21:56:10 · 262 阅读 · 0 评论 -
《算法第四版》学习心得一——怎么学算法
一、算法的两个核心算法的核心内容实际上有两个:算法的概念和思路。 算法的编程实现。两者相互关联影响,缺一不可。不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。二、学算法需要什么基础首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...原创 2018-10-31 12:04:32 · 3650 阅读 · 3 评论 -
Java链表栈(支持泛型和迭代)
自己写个支持泛型与迭代的链表栈,先定义好接口,如下:代码如下:import java.util.Iterator;public class LinkedListStack<T> implements Iterable<T> { Node head; //栈头 int length; //链长度 //定义子类节点,包含有参合无参两种构造方...原创 2018-08-01 19:38:09 · 223 阅读 · 0 评论 -
链表队列(支持泛型和迭代)import java.util.Iterator; public class LinkedListQueue<T> implements Iterable<T>{
自己写个支持泛型和迭代的链表队列,接口如下:代码如下:有一点需要特别注意,在出队列时,如果队列中只上下一个元素,那么需要将队列的头和尾回归到同一个位置。使队列回归到初始化的状态,否则会报空指针异常。import java.util.Iterator;public class LinkedListQueue<T> implements Iterable<T&...原创 2018-08-01 21:00:43 · 611 阅读 · 0 评论 -
背包、栈、队列基于数组和链表的实现
一、背包、栈、队列的概念背包(Bag):背包是一种不支持从中删除元素的集合数据类型,它的目的就是帮助收集元素并迭代遍历所有收集到的元素。迭代的顺序不确定且与具体的用例无关。 队列(Queue):先进先出队列,简称队列,是一种基于先进先出(FIFO,first in first out)策略的集合类型。它在保存元素的同时也保存了他们的相对顺序。队列时许多日常现象的自然模型,也是无数应用程序的核...原创 2018-10-29 00:53:51 · 313 阅读 · 0 评论 -
《统计学习方法》学习笔记1——统计学习三要素
什么是统计机器学习/统计学习/机器学习? 三个词指的都是同一概念,这里统一简称为机器学习,指的是计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。实现机器学习的步骤是什么?得到有限的训练数据集合 确定包含所有可能的模型的假设空间,即学习模型的集合 确定模型选择的准则,即学习的策略 实现求解最优模型的算法,即学习的算法 通过学习算法选择最优模型 利用学习的...原创 2018-09-19 15:50:25 · 363 阅读 · 0 评论 -
神经网络——最易懂最清晰的一篇文章
神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。 本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文。 神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技...转载 2018-08-24 15:43:20 · 767685 阅读 · 330 评论 -
冒泡排序
冒泡排序时间复杂度O(n2)public class BubbleSort { int[] array; public BubbleSort(int[]array){ this.array=array; } public void sort() { for(int i=0;i<array.length;i++) { for(int j=i+1;j<...原创 2018-08-02 18:55:40 · 142 阅读 · 0 评论 -
算法设计技巧
在一段时间的算法学习以后,我们会有一定量的算法积累。借助这些算法,我们可以解决许多现成的问题。并且我们可以看到,当一个算法给定时,具体的数据结构无需指定。为使运行时间尽可能地少,需要由编程人员来选择适当的数据结构。但是,有时候我们不得不把注意力从算法的实现转向算法的设计,因为已有的算法和数据结构并不能完全解决我们在编程中遇到的所有问题。因此,这里我们将集中讨论用于求解问题的五种通用类型的算...原创 2018-11-28 15:22:52 · 784 阅读 · 0 评论