随笔分类 - 数据结构与算法
摘要:按照某个关键字的值进行排序。 不稳定排序 原数据: 70 30 40 60 30 80 稳定排序:在前面的数据会一直在前面 30 30 40 60 70 80 不稳定排序:在前面的数据,排序后不一定在前面 30 30 40 60 70 80 冒泡排序 频繁的比较和交换。它属于稳定排序。C语言嵌套fo
阅读全文
摘要:1、TreeSet(红黑树实现) 底层使用TreeMap实现,储存结构为红黑树。 构造器: public TreeSet() { this((NavigableMap)(new TreeMap())); } add操作,把数据作为key加入map中,把一个Object对象加入value中。 priv
阅读全文
摘要:哈希表,也叫做散列表,它通过哈希码直接找到指定数据。就和数组中通过索引获取元素一样,很快。 特点: 1、添加快 2、查找快 3、唯一 4、无序 1、hashCode方法 它返回一个整数,是数据的哈希码。 2、散列算法 它指通过数据的哈希码,计算出数据在哈希表中位置。 例子,除留取余法: 一个哈希表长
阅读全文
摘要:查找树:又叫做搜索树、排序树,它规定了内部的结构是有规律的。 平衡树:是查找树,且保证左右子树层数相当。 1、二叉查找树 它满足左子树小于根,右子树大于根,且每一个子树都是二叉查找树。 例如: 对其进行中序遍历会得到有序集合: 第一个:2 3 4 6 7 9 13 15 17 18 20 第二个:1
阅读全文
摘要:1、顺序查找 按照顺序一个一个比较,查找需要的值。 代码实现: 时间复杂度:T(n) = O(n) 空间复杂度:S(n) = O(1) static int findKey(int[] arr,int obj){ for(int i = 0;i< arr.length;i++){ if(arr[i]
阅读全文
摘要:定义 多对多的存储结构。 构成: 顶点、边 分类: 有向图、无向图,加权图。(加权指的是给边赋值,例如长度、耗时。) 储存结构 1、邻接矩阵,二维数组。 2、邻接表,数组存放顶点,链表存放边。 遍历 从某个顶点出发,按照某种方法访问图中所有顶点。 分类: 1、深度优先遍历。 类似于二叉树的先序遍历,
阅读全文
摘要:树(Tree)是n个结点的有限集合。 度:拥有子结点的数量为结点的度,树中最大的度为树的度。 结点(节点):根结点、内部结点、叶子结点 有序树:左分支和右分支严格区分的树。 二叉树 每个结点的度最大为2的树,二叉树为有序树。 满二叉树:每层结点都是满的二叉树。 完全二叉树:在一个满二叉树中,从右下侧
阅读全文
摘要:栈和队列是运算受限的线性表。 栈:只能后进来的元素先出去。 队列:只能先进来的元素先出去。 1、栈(Stack) 后进先出,可以使用数组和单链表实现。 入栈:push 出栈:pop 取出栈顶元素:peek 2、队列(Queue) 先进先出,可以使用循环数组和单链表实现 队尾,进来的一端:rear 队
阅读全文
摘要:线性表是有限个相同元素有顺序地排列的集合。 实现方式通常分为顺序表实现和链表实现。 Java中的线性表有: Vector、ArrayList :顺序表实现。 LinkedList :双向链表实现。 1、顺序表(数组)实现线性表 直接分配一块连续的内存存储数据。比如数组,就是一个天然的顺序表。 优点:
阅读全文