
数据结构与算法
文章平均质量分 76
Bart_G
Life -> Code
展开
-
数据结构与算法的Java描述--1
1,递归调用的使用/*递归调用四条基本法则: * 1,基准情形:必须有某些基准情形,他们不用递归就能求解 * 2,不断推进:对于那些需要递归求解的情形,递归调用总能够朝着基准的情形的方向走过去 * 3,设计法则:假设所有的地柜都能调用 * 4,和成效益法则:再求解一个问题的同一实例时,切勿在不同的递归中做重复的运算 * */package Demo1;public原创 2016-08-06 13:25:56 · 494 阅读 · 0 评论 -
几个算法的描述和时间复杂度的解释
/* * (1)-最大子序列求和问题 * 4种算法的比较 * (2)-若干个算法的比较 * */package Demo1;public class MyAlgorithm {/* 算法 1 O(N^3) */public static int maxSubSuml(int[] a){int maxSum = 0;for(int i=0;原创 2016-08-06 13:33:21 · 1375 阅读 · 0 评论 -
树的概念
树形结构概念 对大量的输入数据,链表的线性访问时间太慢,不宜使用。本文探讨另外一种重要的数据结构—-树,其大部分时间可以保证操作的运行平均时间复杂度为O(logN) 几个概念 1. 根节点:A节点是根节点 一颗树只有一个根且由根发展而来,从另外一个角度来说,每个结点都可以认为是其子树的根 2. 父节点:结点的上层结点,例如图中D节点的父节点就是A 3. 兄弟节点:具有相同父节点的节原创 2017-01-13 21:29:53 · 294 阅读 · 0 评论 -
栈的实现
栈栈是我们比较熟悉的概念,最大的特点就是先进后出,对栈的模拟有两种方式: 1. 链表 2. 数组链表的实现使用单行链表进行模拟/** * 单向链表实现 */class ListStack<T>{ /** * 内部节点类 */ private class Node<T>{ Node(){} Node(T data,Node<T原创 2017-05-14 17:39:42 · 219 阅读 · 0 评论 -
表,栈和队列
ADT抽象数据类型 abstract data type,ADT是带有一组操作的一些对象的集合。Java中的Integer,String等就是抽象数据类型。1-表ADT1.1 概念的引入 A0,A1,A2,…,A(N-1)的一般表,我们说这个表的大小是N,我们将为0的表成为空表。1.2 链表链表由一些节点组成,这些节点不必在内存中相连,每个节点均含有表元素和到包含表元素后继节点的链(link),我们原创 2016-08-14 11:39:29 · 907 阅读 · 0 评论 -
线性表(1)普通线性表
线性表 线性表(List):零个或多个数据元素的有限序列首先明确几个概念 1. 线性表是一个序列,元素之间是有顺序的 2. 若元素存在多个,第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继 3. 线性表是强调有限的 如上图所示一个线性表,将线性表记为(a1,a2,a3…an)则ai+1领先于ai,ai+1成为ai的直接前驱元素,ai-1称为ai的直接后驱元素。普原创 2017-05-09 22:04:26 · 739 阅读 · 0 评论 -
线性表(2)双向链表
链表1.前言上一篇博客说了普通线性表,我们发现了该表的缺陷是在插入数据或添加数据的时候会大量移动数组元素,从而造成时间复杂度的提升, 为了解决这个问题,需要使用链表,链表是相对于数组更加先进的一种数据结构,更加灵活,而且便于管理。为了便于理解链表,画了一个示意图,这里以双向链表为例: 2.原理分析1.双向链表的每一个元素可以看成一个Node节点,每一个Node节点应该拥有要存储的数据类型,上一个原创 2017-05-09 23:08:31 · 343 阅读 · 0 评论