
数据结构
shijunwang
这个作者很懒,什么都没留下…
展开
-
算法的时间复杂度和空间复杂度-总结
算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间转载 2018-01-04 17:44:16 · 191 阅读 · 0 评论 -
数据结构:第七章(树)
哈夫曼树哈夫曼树是一种应用广泛的二叉树,可用来构造最优编码,用于信息传输、数据压缩等方面。 我们先来了解一些基本概念 路径:路径是指从一个结点到另一个结点之间的分支序列。 路径长度:是指从一个结点到另一个结点经过的分支数目。 结点的权:实际应用中,人们常常给树的某个结点赋予一个具有某种实际意义的实数,称该实数为这个结点的权。 树路径长度:从树根到每一结点的路径长度之和 带权路径长度:从树转载 2018-02-02 14:43:47 · 479 阅读 · 1 评论 -
数据结构:第六章(树)
树树是n个结点的有限集。n=0时称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2…..Tm,其中每一个集合本身又是一棵树,并且称为根的子树。如下图 结点: 树的结点包含一个数据元素及若干指向其子树的分支。 结点的度:结点拥有的子树数称为结点的度。 叶结点:度为0的结点称为叶结点或终端结点。 分支转载 2018-02-02 14:42:36 · 571 阅读 · 0 评论 -
数据结构:第五章(串和KMP算法)
串串是由零个或多个字符组成的有限序列,经常被称为字符串。一般记为s=”a1a2a3a4..an”. 零个字符的串被称为空串,长度为0.串中任意个数的连续字符组成的序列被称为子串,包含子串的串被称为主串。例如lover是love的主串,love是lover的空串。串的比较字符串的比较是通过字符之间的ASCII编码值来确定大小的。比较两个字符串是否相等,必须是它们的长度以及对应位置的字符都相等才认定相转载 2018-02-02 14:41:29 · 373 阅读 · 0 评论 -
数据结构:第四章(HashMap和HashSet底层原理及实现)
HashMap内部原理及实现什么是哈希表?哈希表(hash table)也叫散列表,是一种非常重要的数据结构,我们先来看一下其他数据结构的特点。 数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n) 链表:对于转载 2018-02-02 14:40:32 · 453 阅读 · 0 评论 -
数据结构总结及网络基础
========================数据结构=====================================数据结构+算法=程序 数据结构是程序的骨架,算法则是程序的灵魂。一:数据描述1、数据:数据是描述客观事物的数值、字符以及能输入给计算机且能被计算机处理的各种符号集合。 简单的来说,数据就是计算机化的信息。2、数据元素:是组成数据的基本单位,在计算机中通常被作为一个整体...原创 2018-02-09 17:10:10 · 1281 阅读 · 0 评论 -
数据结构:第一章(时间复杂度和空间复杂度)
数据结构数据结构基础概念不论是哪所大学,数据结构和算法这门课都被贯上无趣、犯困、困难的标签,我们从最基础最通俗的语言去说起,保证通俗易懂。 数据结构到底是什么呢?我们先来谈谈什么叫数据。 数据:数据是描述客观事物的数值、字符以及能输入给计算机且能被计算机处理的各种符号集合。 简单的来说,数据就是计算机化的信息。 数据元素:是组成数据的基本单位,在计算机中通常被作为一个整体进行考虑和处理。也被称为记转载 2018-02-02 14:35:54 · 458 阅读 · 0 评论 -
数据结构:第二章(表)
表线性表的定义线性表,从名字上来看,像线连起来的表。每个元素都是连起来的,比如在体育课按照老师定好的队列排队的时候,有一个打头,一个收尾,中间的每个人都知道前面是谁,后面是谁,就像一根线将他们联系在一起,就可以称之为线性表。这时候我们来看几个关键点,首先元素之间是有顺序的,并且第一个元素无前驱,最后一个元素无后继,其他的元素都有且只有一个前驱和后继,这样才能形成线性表。我们用数学语言来进行定义,若有转载 2018-02-02 14:38:29 · 357 阅读 · 0 评论 -
数据结构:第三章(栈和队列)
栈栈是限制仅在一个位置上进行插入和删除的线性表。允许插入和删除的一端为末端,称为栈顶。另一端称为栈底。不含任何数据元素的栈称为空栈。栈又成为后进先出(LIFO)表,后进入的元素最先出来。 首先,栈是一个线性表,元素之间具有线性关系,即前驱后继关系,其次,它是一种特殊的线性表,只能在表尾进行插入和删除操作。栈的插入操作,叫作进栈(push),删除操作,叫作出栈(pop). 由于栈是一个线性表,所以我们转载 2018-02-02 14:39:31 · 418 阅读 · 0 评论 -
java必学8大排序
本文主要详解了Java语言的8大排序的基本思想以及实例解读,详细请看下文8种排序之间的关系:1, 直接插入排序(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例(3)用java实现 package com.njue; publi转载 2018-01-21 11:13:28 · 261 阅读 · 0 评论 -
数据结构:第八章(排序)
#排序排序是我们程序中经常面对的问题,那么排序的严格定义是什么呢?假设含有n个记录的序列为{r1,r2,r3…..,rn},其对应的关键字分别为{k1,k2,k3…..,kn},需确定1,2,…..,n的一种排列p1,p2,……..,pn,使其相应的关键字满足Kp1<=Kp2…….<=Kp2(非递减或非递增)关系,即使得序列成为一个按关键字有序的序列{rp1,rp2……rpn},这样的操作就称为排序转载 2018-02-02 14:45:13 · 364 阅读 · 0 评论