《数据结构与算法》之红黑树

二叉查找树对于某个节点而言,其左子树的节点关键值都小于该节点关键值,右子树的所有节点关键值都大于该节点关键值。二叉查找树作为一种数据结构,其查找、插入和删除操作的时间复杂度都为 O(logN) ,底数为 2。但是我们说这个时间复杂度是在平衡的二叉查找树上体现的,也就是如果插入的数据是随机的,则效率...

2018-12-10 20:52:51

阅读数 78

评论数 0

《数据结构与算法》之二叉树

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉查找树要求:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子...

2018-12-09 17:03:46

阅读数 18

评论数 0

《数据结构与算法》之递归(3)

4、汉诺塔问题 汉诺塔问题是由很多放置在三个塔座上的盘子组成的一个古老的难题。如下图所示,所有盘子的直径是不同的,并且盘子中央都有一个洞使得它们刚好可以放在塔座上。所有的盘子刚开始都放置在A 塔座上。这个难题的目标是将所有的盘子都从塔座A移动到塔座C上,每次只可以移动一个盘子,并且任何一个盘子都...

2018-12-09 10:43:49

阅读数 14

评论数 0

《数据结构与算法》之递归(2)

2、递归的二分查找 注意!!!二分查找的数组一定是有序的。 在有序数组array[]中,不断将数组的中间值(mid)和被查找的值比较,如果被查找的值等于array[mid],就返回下标mid; 否则,就将查找范围缩小一半。如果被查找的值小于array[mid], 就继续在左半边查找;如果被查找...

2018-12-06 21:08:22

阅读数 13

评论数 0

《数据结构与算法》之递归(1)

递归是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。 递归三要素:(...

2018-12-05 20:42:30

阅读数 19

评论数 0

《数据结构与算法》之队列(基于链表构造)

在队列的形成过程中,可以利用线性链表的原理,来生成一个队列。新元素(等待进入队列的元素)总是被插入到链表的尾部,而读取的时候总是从链表的头部开始读取。每次读取一个元素,释放一个元素,即所谓的动态创建,动态释放。因而不存在溢出等问题。由于链表由节点连接而成,遍历也方便。 public class...

2018-11-21 21:32:21

阅读数 18

评论数 0

《数据结构与算法》之队列(基于数组构造)

队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 数组实现队列,分为顺序队列和循环队列。 1、顺序队列 建立顺序队...

2018-11-13 10:44:06

阅读数 31

评论数 0

《数据结构与算法》之栈的应用

1、字符串的翻转(逆序) 根据栈“后进先出”的特点,可以利用栈对字符串进行反转,即实现字符串的逆序。 借助于《数据结构与算法》之栈(2)中的栈结构,相应实现的代码如下: public static void ReverString() { BigStack stack = new B...

2018-11-10 19:30:44

阅读数 41

评论数 0

《数据结构与算法》之栈(2)

如《数据结构与算法》之栈(1)所述,所构建的栈存在着如下问题: (1)容量固定问题,即栈创建之后,容量固定,不能够进行扩容,对于小型的可预知的应用来说,简单的栈就可以了。但是对于不可预知的应用,此栈结构将不再适合,需要构建容量可扩展的栈结构; (2)此栈只能存储int类型数据,对于其它类型数据...

2018-11-10 18:57:27

阅读数 40

评论数 0

《数据结构与算法》之栈(1)

栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top),相对地,把另一端称为栈底。对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后插入的元素。由于堆叠数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last I...

2018-11-10 16:41:53

阅读数 28

评论数 0

《数据结构与算法》之链表—双向链表

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。 双向链表构造代码如下: public class DoubleLinkedList { private Node ...

2018-11-10 11:21:30

阅读数 26

评论数 0

《数据结构与算法》之排序算法(归并排序)

 5、归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并...

2018-11-10 08:39:04

阅读数 67

评论数 0

《数据结构与算法》之排序算法(插入排序、希尔排序)

3、插入排序 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插...

2018-11-09 21:19:08

阅读数 179

评论数 0

《数据结构与算法》之排序算法(冒泡排序、选择排序)

排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。 排序算法分类: 一、非线性时间比较类排序 1、交换排序(冒泡排序、快速排序) 2、插入排序(简单插入排序、布尔排序) 3、选择排序(简单选择排序、堆排...

2018-11-08 20:30:17

阅读数 60

评论数 0

《数据结构与算法》之算法简介

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间...

2018-11-07 21:34:34

阅读数 63

评论数 0

《数据结构与算法》之数据结构简介

数据结构=数据+结构,数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 一、数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻...

2018-11-07 20:36:15

阅读数 59

评论数 0

《数据结构与算法》之链表—有序链表

2、有序链表 有序链表是在单链表的基础上对单链表的表头节点插入进行修改,从表头开始根据插入值与链表中原先存在的数据节点进行比较判断,若大于(或小于)该节点就向后移一个节点进行比较,直至不大于(或小于)该节点,最终实现按照从小到大(或从大到小)的顺序排列链表。 // 插入节点,并按照从小到大的...

2018-11-06 21:35:05

阅读数 39

评论数 0

《数据结构与算法》之抽象数据类型(ADT)

抽象数据类型(abstract data type,ADT)是带有一组操作的一些对象的集合。抽象数据类型是数学的抽象,只不过这种数据类型带有自己的操作。比如表、集合、图以及与它们各自的操作一起形成的这些对象都可以看做抽象数据类型,就像整数、实数、布尔数等都是数据类型一样。整数、实数、布尔数都有各自...

2018-11-06 20:53:04

阅读数 175

评论数 0

《数据结构与算法》之链表—双端链表

2、双端链表 双端链表就是在单链表的基础上增加一个尾节点,使链表既有头节点又有尾节点,这样方便进行链表尾的访问和删除。其计算复杂度如下:1、在表头插入一个新的节点,时间复杂度O(1) ;2、在表尾插入一个新的节点,时间复杂度O(1) ;3、删除表头的节点,时间复杂度O(1) ;4、删除表尾的节点...

2018-11-06 20:04:08

阅读数 30

评论数 0

《数据结构与算法》之链表—单向链表

链表(LinkedList) 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中每一个元素称为节点)组成,节点可以在运行时动态生成。每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。 ...

2018-11-05 19:56:26

阅读数 31

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭