2019年7月18日

数据结构与算法---堆排序(Heap sort)

摘要:堆排序基本介绍 1、堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 2、堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值 阅读全文

posted @ 2019-07-18 23:41 wanbf 阅读 (154) 评论 (1) 编辑

2019年7月15日

数据结构与算法---线索化二叉树(Threaded BinaryTree)

摘要:先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树 问题分析: 线索二叉树基本介绍 1、n个结点的二叉链表中含有n+1 【公式 2n-(n-1)=n+1】 个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为" 阅读全文

posted @ 2019-07-15 23:44 wanbf 阅读 (132) 评论 (0) 编辑

2019年7月10日

数据结构与算法---树结构(Tree structure)

摘要:为什么需要树这种数据结构 数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低。 链式存储方式的分析 优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入 阅读全文

posted @ 2019-07-10 23:37 wanbf 阅读 (94) 评论 (0) 编辑

2019年7月7日

数据结构与算法---查找算法(Search Algorithm)

摘要:查找算法介绍 在java中,我们常用的查找有四种: 1)线性查找算法 示例: 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。 思路:将数列遍历匹配,就是用for循坏遍历,if匹配数据,找到下标值 阅读全文

posted @ 2019-07-07 12:52 wanbf 阅读 (45) 评论 (0) 编辑

2019年6月16日

数据结构与算法---排序算法(Sort Algorithm)

摘要:排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类 1) 内部排序: 指将需要处理的所有数据都加载 到内部存储器(内存)中进行排序。 2) 外部排序法:数据量过大,无法全部加载到内 存中,需要借助外部存储(文件等)进行 排序 阅读全文

posted @ 2019-06-16 23:28 wanbf 阅读 (147) 评论 (0) 编辑

2019年6月9日

数据结构与算法--八皇后问题(回溯算法)

摘要:八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 那么我们使用编程来算出有多少种摆法,这也是使 阅读全文

posted @ 2019-06-09 17:24 wanbf 阅读 (24) 评论 (0) 编辑

数据结构与算法--递归(recursion)

摘要:递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 递归调用机制 我列举两个小案例,来帮助大家理解递归 1、打印问题 2、阶乘问题 3、使用图解说明递归的调用机制 递归能解决什么样的问题 1、各种数学问题如: 8皇后问 阅读全文

posted @ 2019-06-09 15:28 wanbf 阅读 (51) 评论 (0) 编辑

2019年6月5日

数据结构之链表(LinkedList)(三)

摘要:数据结构之链表(LinkedList)(二) 环形链表 顾名思义 环形列表是一个首尾相连的环形链表 示意图 循环链表的特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。 看一样著名的应用场景 我们就可以用环形单链表解决这个问题。 首先我们怎么构建一个环形链表 分析: 1. 阅读全文

posted @ 2019-06-05 23:18 wanbf 阅读 (140) 评论 (0) 编辑

2019年6月3日

数据结构之链表(LinkedList)(二)

摘要:数据结构之链表(LinkedList)(一) 双链表 上一篇讲述了单链表是通过next 指向下一个节点,那么双链表就是指不止可以顺序指向下一个节点,还可以通过prior域逆序指向上一个节点 示意图: 那么怎么来实现双链表的增删改查操作呢。 分析: 1) 遍历 方和 单链表一样,只是可以向前,也可以向 阅读全文

posted @ 2019-06-03 22:31 wanbf 阅读 (189) 评论 (0) 编辑

2019年6月1日

数据结构之链表(LinkedList)(一)

摘要:链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 1)链表是以节点方式存储的,是链式存储 2)每个节点包含data域(value),next域,指向下一个节点 3)各个节点不一定连续存储,如上图 4)链表分 带头节点的链表和 不带头节点的链表,根据实际需求确定 单链表介 阅读全文

posted @ 2019-06-01 23:35 wanbf 阅读 (267) 评论 (2) 编辑

导航