随笔分类 - 数据结构
摘要:查找分为内查找和外查找。 顺序表查找: 线性表的顺序存储结构主要使用两种方法:顺序查找和二分查找。 1)顺序查找:从表的一端开始,顺序扫描线性表,依次把扫描的记录和关键字比较,如果相等查找成功返回所在记录下标,否则失败,继续查找直到扫描完成。 2)二分查找:要求查找线性表必须是顺序存储结构的有序表,
阅读全文
摘要:排序分为内部排序和外部排序,区别在于存储数据的位置。 内部排序分别有五类:插入、选择、交换、归并和分配排序。 排序过程有两个操作:一是比较关键字大小,二是记录的移动或改变。 (1)插入排序 基本思想:每次将待排序的记录按关键字的大小插入到前面已经排序好的适当位置,直到全部记录插入完成。 主要方法:直
阅读全文
摘要:树形结构是一种非线性结构,树中每个结点的都有关系性,生活中族谱、大学机构等都是树形结构,在计算机中编译程序用来表示源代码的语法结构,数据库索引,计算机图形表示图像关系等。 树的定义是,n(n >= 0)个结点的有限集T。它或是空集(空树即 n = 0),或者非空集。对于任意一棵非空树,有且仅有一个特
阅读全文
摘要:时间复杂度:O(2N) int maxSubArr() { int arr[] = {-2, 11, -4, 13, -5, -2}; int i, length, max, j; length = sizeof(arr) / sizeof(int); max = 0; int temp = 0;
阅读全文
摘要:/** * 二分查找 */ public class BinarySearch{ /** * 搜索 * @param key 关键字 * @param arr 数据源 * @return int */ public static int search(int key, int[] arr) { in
阅读全文
摘要:介绍: 图是一种复杂的非线性结构,图型结构在每个节点中的元素关系是任意的,图G由两个集合V和E组成,定义G=(V,E),其中V是点的有限非空集合,E是由V的点表示的边的集合。 对于图G,可大致分成两种方式,如果每条边都有方向称为有向图,否则是无向图。 在无向图中存在一条边表示(vi,vj),称为边的
阅读全文
摘要:广义表是n个元素的有限序列,每一个元素都是原子项或者是广义表,通常记作LS=(a1,a2,an),如果是a1广义表为其字表称为表头,其余元素为表尾。 广义表的性质: (1)广义表的元素可以是子表或是元素,而子表内还可以包含子表,因此广义表可以多层结构。 (2)广义表具有递归和共享的性质。 广义表的基
阅读全文
摘要:介绍: 当数据的维数大于1时,成为多维数组,可以看成线性表的推广。 数组一般不做插入和删除操作,因此数据建立时就固定的元素个数和对应关系。所以一般采用顺序存储结构。 由于计算机的内存结构是一维的,所以多维数组的数据存储结构是必须根据某种规则排成线性序列。 一般通过行向量表示: Am x n = [[
阅读全文
摘要:队列是一种操作受限的线性表,插入(入队)的一端为队尾,删除(出队)的一端是队头。队列每次入队的元素总是顺序出队,所是先进先出。 队列的基本运算: 置空队列 判断队空 入队 获取头元素 出队 队列的存储方式:顺序循序队列和链队列和循环链队列。 #include <stdio.h> #include <
阅读全文
摘要:栈是一种把表的一端执行删除和添加操作的线性表,通常把操作的一端成为栈顶,另一端为栈底。 根据定义可知它的结构让数据保持先进后出的特点。 栈的基本运算有六种: 1.置空栈:构造一个空栈。 2.判断空栈:若栈为空,则返回true, 否则 false. 3.判断栈满:若栈满,则返回true,否则false
阅读全文
摘要:链式与顺序结构的最大区别在于,插入或删除操作需要移动大量元素。 链表类型:单链表,循环链表,双向链表。 单链表的组成:每个数据元素内包括两个域:数据域和指针域。 单链表的创建方式有两种:一种是头插法和尾插法。 循环链表:单链表最后一个节点的指针域不为空而是指向链表的头结点。 双向链表与单链表的区别在
阅读全文
摘要:线性表:它是由n个数据元素组成的有限序列。(a1,a2,...an) 线性表的特征: 1.有且只有一个开始元素a1,它没有前趋,只要一个直接后继。 2.有且只有一个终端元素an,,它没有后继,只有一个直接前趋。 3.其它元素ai(2<=i<=n-1)内部元素,都有一个直接前趋和后继。 线性表的特征元
阅读全文