数据结构
半城抹茶
这个作者很懒,什么都没留下…
展开
-
排序
一、冒泡排序和插入排序(简单的排序) 冒泡排序原理:依次比较相邻的两个数,将更大的数移到右侧,这样进行一轮,被移到最右边的数肯定是这组数字里最大的。再进行一轮,倒数第二位置放的一定是第二大的数字...以此类推。 时间复杂度分析:顺序 T=O(n) 逆序 JAVA语言: public static void bubbleSort(int[] arr){ //一定要记住...原创 2020-01-29 17:14:48 · 241 阅读 · 0 评论 -
堆(优先队列)
一、堆 什么是堆? 用完全二叉树表示的优先队列 优先队列:取出元素的顺序依据优先级的大小 处理的问题思想类似于CPU处理任务时的优先级 堆的特性:1.结构性 2.有序性 如果最小键值元素拥有最高的优先级,那么这种优先队列叫作升序优先队列(即总是先删除最小的元素),类似的,如果最大键值元素拥有最高的优先级,那么这种优先队列叫作降序优先队列(即总是先删除最大的元素)。一般默认的优先队列为...原创 2020-01-17 17:34:02 · 274 阅读 · 1 评论 -
散列表(哈希表)
散列是什么? 散列表的实现叫做散列,散列是一种用以常数平均时间来执行查找、插入和删除的的技术。但是,需要元素之间任何排序信息的树操作是不行的。 所以散列表适合数据量很大,但是不对数据之间排序有要求的情况。 一、散列函数 散列表的查找有两个基本工作: 1.计算位置:通过散列函数,确定关键词的储存位置 2.解决冲突:应用某种策略解决多个关键字位置相同的问题 每个关键字被映射到0到Tabl...原创 2020-01-07 10:43:20 · 285 阅读 · 0 评论 -
树总结
什么是树?为什么要有树? 个人理解:树就是带有一定层次结构的抽象数据类型。因为将数据分成有层次类型之后,在管理和查找操作上就更有效率。 一、二叉树 二叉树:每个节点最多含有两个子树的树称为二叉树。 满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。也可以这样理解,除叶子结点外的所有结点均有两个子结点。节点数达到最大值,所有叶子结点必须在同一层上完全二叉树:若设二叉树...原创 2019-12-30 11:25:19 · 172 阅读 · 1 评论 -
表、栈和队列总结
抽象数据类型(abstract data type, ADT)是带有一组操作的一些对象的集合。对于集合ADT, 可以有像添加(add)、删除(remove)以及包含(contain)这样一些操作。 上面是权威解释,个人理解抽象数据类型就是有一堆数据的集合,我们可以对其进行增删改查等操作。 一、表 1.1 java中的表结构 在JAVA的list接口,里面又分为ArrayList和Linke...原创 2019-12-30 10:25:12 · 196 阅读 · 1 评论 -
Leetcode天天练
题目: C: bool isValid(char * s){ if (s == NULL || s[0] == '\0') return true;//如果是空字符,返回1 char stack[10240]; int top =0;//弊端:预设了长度10240 for (int i = 0; s[i]; i++) { if (s[i] == '...原创 2019-09-06 17:23:29 · 130 阅读 · 0 评论