随笔分类 -  数据结构与算法

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

点击右上角即可分享
微信分享提示