![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 78
基础的结构与算法知识
Fly upward
大家互相多多交流
展开
-
【算法】折半插入排序
折半插入排序与直接插入排序算法原理相同。只是,在向已排序的数据中插入数据时,采用来折半查找(二分查找)。先取已经排序的序列的中间元素,与待插入的数据进行比较,如果中间元素的值大于待插入的数据,那么待插入的数据属于数组的前半部分,否则属于后半部分。依次类推,不断缩小范围,确定要插入的位置。...原创 2022-08-11 22:24:12 · 1093 阅读 · 0 评论 -
【算法】折半查找
折半搜索,也称二分搜索、对数搜索,是一种在有序数组中查找某一特定元素的搜索算法。原创 2022-08-10 21:31:01 · 1516 阅读 · 0 评论 -
【算法】选择排序
选择排序是一种简单直观的排序算法。堆排序是指利用堆这种数据结构所设计的一种排序算法原创 2022-08-05 21:49:02 · 162 阅读 · 4 评论 -
【算法】插入排序
直接插入排序是一种最简单的排序方法,其基本操作是将一个记录插入到已排好的有序列表中,从而得到一个新的、记录数量增一的有序表。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。...原创 2022-08-04 23:28:40 · 164 阅读 · 5 评论 -
Map和Set
Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。Map和Set是一种适合动态查找的集合容器原创 2022-08-02 23:26:15 · 138 阅读 · 2 评论 -
了解泛型的使用
规范:类型形参一般使用一个大写字母表示,常用的名称有:E 表示 ElementK 表示 keyV 表示 ValueN 表示 NumberT 表示 TypeS,U,V 表示第二、第三、第四个类型原创 2022-08-18 09:12:37 · 209 阅读 · 1 评论 -
高频单链表题
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 时间复杂度:O(n), 遍历一次链表空间复杂度:O(1)将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。例如:给出的链表为 1→2→3→4→5→NULL, m=2,n=4返回 1→4→3→2→5→NULL.。思路复杂度:将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。如果链表中的节点数不原创 2022-07-04 23:50:54 · 740 阅读 · 10 评论 -
认识堆的用处
目录1. 堆的概念2. 向下调整2.1 向下调整为大根堆2.2 向下调整为小根堆3. 堆的应用——优先级队列3.1 概念 3.2 内部原理3.3 入队列 3.4 出队列(优先级最高)3.4 Java中的优先级队列4. TopK 问题5. 堆排序1)堆逻辑上是一颗完全二叉树2)堆物理上是保存在数组中3)满足任意节点的值都大于其子树中节点的值,叫做大堆,或者大根堆。4)满足任意节点的值都小于其子树中节点的值,叫做小堆,或者小根堆,或者最小堆。前提:左右子树必须已经是一个堆,才能调整说明:.........原创 2022-07-07 22:28:10 · 1361 阅读 · 10 评论 -
常用七大排序算法
1.常见排序算法分类 2.直接插入排序2.1 解析 2.2 代码实现2.3 性能分析3. 希尔排序4. 选择排序5. 堆排序6.冒泡排序7. 快速排序8. 归并排序8.1 两个有序数组合并 8.2 归并排序8.3 非递归的归并排序通过两个 for 循环来逐一比较插入。常用于 数据量不多且整体趋于有序。 .....................原创 2022-07-08 16:08:45 · 677 阅读 · 12 评论 -
二叉树高频题型
1.完全二叉树的节点个数2. 叶子节点个数3. 获取第K层节点的个数4. 二叉树的最大深度5. 查找二叉树的value是否存在6. 是否是完全二叉树7. 相同的树8. 另一颗树的子树9. 平衡二叉树10. 对称二叉树 11. 二叉树的层序遍历12. 二叉搜索树的最近公共祖先13. 二叉搜索树 转换为排序的双向链表给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。...原创 2022-07-06 11:59:37 · 129 阅读 · 17 评论 -
浅谈二叉树
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。遍历方法有:前序遍历、中序遍历、后续遍历原创 2022-06-24 11:25:30 · 398 阅读 · 11 评论 -
栈和队列的基本使用
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中元素遵守 “先进后出”的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,如数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶1)利用顺序表实现,即使用尾插+尾删的方式实现2)利用链表实现,则头尾都可以因为顺序表实现上更为......原创 2022-06-22 11:54:39 · 229 阅读 · 21 评论 -
List基本使用
List 的引入知识是泛型,和装箱、拆箱。再通过 List、ArrayList 的方法来进行知识的汇聚原创 2022-06-16 09:54:14 · 249 阅读 · 14 评论 -
带傀儡头结点的双向链表
结构框图下面的是头插法,傀儡节点一直是头节点,是不会变动的,所以头插法只能从傀儡节点下一个插入其他方法和不带头的双链表是差不多的链表源码class ListNode { public int val; public ListNode prev; public ListNode next; public ListNode(int val) { this.val = val; }}//带头傀儡节点双链表public..原创 2021-12-17 16:57:06 · 910 阅读 · 14 评论 -
看了有助于你面试的单链表的OJ面试题
1.反转链表反转链表我们先从前面开始反转,一个一个节点来public ListNode reverseList() { if(this.head == null) { return null; } ListNode cur = this.head; ListNode prev = null ; ListNode curNext = cur.next; while (cu.原创 2021-12-13 21:01:05 · 584 阅读 · 16 评论 -
无头单向非循环链表的解析
1.概念及结构链表是一种物理存储结构非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。无头单相飞循环链表的一个节点含有value(存放数值的) 、 next(下一个节点的地址)...原创 2021-12-12 11:31:41 · 582 阅读 · 20 评论 -
顺序表的实现
一看就会的顺序表原创 2021-12-10 12:18:46 · 758 阅读 · 20 评论 -
有助于你面试的无头双向链表
代码创建两个Java文件,一个是链表的方法:class ListNode { public int val; public ListNode prev; public ListNode next; public ListNode(int val) { this.val = val; }}//双向链表public class MyLinkedList { public ListNode head; public L原创 2021-12-15 11:35:24 · 1199 阅读 · 26 评论 -
过来集合啦,Java的小伙伴们
1.集合框架Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组 接口 interfaces 和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。 2.集合框架的优点及作用...原创 2021-12-01 21:54:19 · 1611 阅读 · 22 评论 -
你喜欢这个邮箱代码吗?用代码实现邮件的撰写和发送
目录1.xml文件2.Java文件3.步骤3.1.xml文件的建立过程3.2.Java文件的建立4.密钥5.后记摘要装12的小代码,学会了给你的朋友炫耀吧!1.xml文件在写代码时,代码中会报红,就是错误的意思,后面的过程,我会教大家如何解决,所以出现报红状态不要怕。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0..原创 2021-11-28 10:26:11 · 2302 阅读 · 30 评论