
------【数据结构与算法】
文章平均质量分 74
「已注销」
战斗意志!
展开
-
排序算法
前言:我们常用的排序算法有插入排序(直接插入排序、希尔排序)、选择排序(简单选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序、基数排序。1、插入排序 (1)直接插入排序 直接插入排序(InsertionSort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。原创 2016-02-05 23:41:44 · 723 阅读 · 1 评论 -
算法设计
(3)递推递推,即是从已知的初始条件出发,逐次推出所要求的各个中间环节和最后结果。其中初始条件或问题本身已经给定,或是通过对问题的分析与化简而确定。递推的本质也是一种归纳,递推关系式通常是归纳的结果。例如,裴波那契数列,是采用递推的方法解决问题的。(4)递归在解决一些复杂问题时,为了降低问题的复杂程序,通常是将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,原创 2016-02-20 10:07:39 · 929 阅读 · 3 评论 -
浅谈数据结构
前言:数据结构就是数据的组织方式。常见的几种数据结构有栈、队列、链表、数组、树、图、堆等。今天来说一下栈和队列的比较,以及链表和数组的比较。1、栈和队列 (1)栈 我们常听见说栈内存,那么栈内存中的数据是如何存储的呢? 数据在栈内存中存入时的方式称为“压栈”,取出的方式称为“弹栈”。这种方式使得栈很像武器枪上的弹夹,像下边: 数据 a 最先存入栈中,原创 2015-11-23 19:00:26 · 1183 阅读 · 9 评论 -
递归解决斐波那契数列
1、什么是递归? 递归:递归是方法定义调用方法本身的现象。递归举例如下:public class DiGuiDemo { //递归方法举例 public void show() { show(); }}2、递归的注意事项?(1)递归一定要有出口。否则就会死递归。 上面举例用的递归就是一个死递归,方法永远都在进行自身调用,最终一定会陷入内存崩溃。所原创 2015-11-24 13:05:51 · 2659 阅读 · 9 评论 -
哈希表入门
1、哈希表简介 出现原因:原先的链表、树等查找方式,都需要一个一个的去比较才能找到,查找效率并不高,哈希表的提出就是解决这一问题,哈希表根据要查找的内容进行计算,得出数据的存储地址进而直接访问,大大提高了查找效率。这个运算的过程归纳成一个函数,就是哈希函数。 在有大量的数据的时候,哈希表比普通的顺序查找要快的多。例如查找某人的身份证,普通方式需要比对很多次,直到比对成功,而哈希原创 2016-02-05 17:24:44 · 2066 阅读 · 1 评论 -
线性表之--链表、栈、队列
前言:基本的数据结构分类 其中,Hash属于散列存储结构。顺序表在内存中是连续的存储空间;而链式在内存中是逻辑上连续,但空间上可以不连续的。今天来介绍一下线性表。1、线性表分类 链表分为单链表、循环链表和双链表、栈和队列等。2、单链表 单链表节点由数据域和指针域组成,数据域用于存放数据,原创 2016-02-05 18:31:41 · 1728 阅读 · 0 评论 -
树和二叉树
1、树 树的遍历分为前序遍历、后序遍历和层次遍历。 ● 前序遍历:在任意子树中,遍历顺序为父节点、左孩子结点、右孩子结点。上图前序遍历顺序为:1 2 5 6 7 3 4 8 9 10 。 ● 后序遍历:在任意子树中,遍历顺序为左孩子结点、右孩子结点、父节点。上图后序遍历顺序为:5 6 7 2 3 9 10 8 4原创 2016-02-05 19:19:26 · 649 阅读 · 0 评论 -
线索二叉树
1、线索二叉树的概念 如果我们需要得到上面二叉树的排序结果时,能够直接得到,而不是每次都去重新排序二叉树的话,效率就会大大得到提高了。线索二叉树就是基于这个理念,将本二叉树的排序事先存储起来,当需要时直接获取结果即可。2、线索二叉树的实现方法 (1)新开辟空间来存储二叉树序列; (2)利用二叉树中未被利用的空间资源;原创 2016-02-05 20:15:49 · 785 阅读 · 0 评论 -
查找二叉树
1、查找二叉树概念 查找二叉树,又称二叉排序树(Binary Sort Tree)。一棵查找二叉树或者是一棵空树,或者满足以下递归条件: (1)查找树的左右子树各是一棵查找树; (2)若查找树的左子树非空,则其左子树上的各节点值均小于根节点的值; (3)若查找树的右子树非空,则其右子树上的各节点值均大于根节点的原创 2016-02-05 20:59:58 · 1465 阅读 · 0 评论 -
平衡二叉树
1、平衡二叉树的出现原因 平衡二叉树的提出原因和排序二叉树有关。是为了提高排序二叉树的查找效率,减少查找次数而提出的。上图的左边是一棵不平衡的二叉树,右边是一棵平衡二叉树。可以得到,在平衡二叉树中的查找时间复杂度要低于非平衡二叉树的时间复杂度。2、平衡二叉树的定义 平衡二叉树(Balanced Binary Tree)原创 2016-02-05 21:24:02 · 1296 阅读 · 1 评论 -
图
1、图的概念 图由点集合和边集合组成,记做G=(V,E),其中点集合不能为空且应该有穷,边集合可以为空。树是一种特殊的图。但是树可以是空树,图不能是空图。图可以没有边,也就是说n个点也能称之为图。 图分为无向图和有向图,上图中G1就是无向图,G2属于有向图。4是一个孤立顶点,也可以称之为图。 ● 有向图:边有方向,用表示,原创 2016-02-05 22:46:28 · 888 阅读 · 0 评论 -
递归解决汉诺塔问题
前言:汉诺塔问题是源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在第三根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 我们用递归算法来解决这个问题,在解决之前首先介绍一下什么是递归算法。1、递归算法原创 2016-02-20 15:40:34 · 1444 阅读 · 5 评论