![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 88
瑾年丶深蓝
这个作者很懒,什么都没留下…
展开
-
Java基础 红黑树学习
红黑树基本简介二叉查找树常见操作二叉查找树存在的缺陷2-3-4树红黑树简介红黑树的常见操作左旋与右旋红黑树的常见操作--新增红黑树的常见操作--删除基本简介 原视频地址https://www.bilibili.com/video/BV135411h7wJ,红黑树学习对我来说难度较大,红黑树的插入和删除非常复杂,这个视频讲的还是很好的,资料来自于该视频。 树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是原创 2020-11-23 18:10:59 · 190 阅读 · 0 评论 -
数据结构和算法学习第八节 排序算法 三 插入排序与希尔排序
插入排序与希尔排序插入排序概述思路分析代码实现希尔排序概述思路分析代码实现插入排序概述 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。 插入排序基本思路 插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插原创 2021-01-26 20:20:25 · 181 阅读 · 0 评论 -
数据结构和算法学习第七节 排序算法 二 冒泡与排序选择排序
冒泡与排序选择排序冒泡排序概述冒泡排序思路分析代码实现选择排序概述思路分析代码实现冒泡排序概述 冒泡排序(Bubble Sort):是一种较简单的排序算法。通过对需要排序的序列,从前到后(从下标较小的元素开始),一次比较相邻元素的值,如果发现逆序则进行交换,比如升序排序:使较大的元素逐渐向后排序。 也可以进行优化->因为排序的过程中,各个元素不断的接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列是有序的,因此要在排序过程中设置一个标志(比如flag)判断元素是否进行过交换原创 2021-01-25 16:51:35 · 128 阅读 · 0 评论 -
数据结构和算法学习第六节 排序算法 一 基本概念
算法的时间复杂度概述算法的时间复杂度概述 排序算法:是将一组数据,按照指定的顺序进行排列的过程。 排序的分类: 1、内部排序:将需要处理的所有数据加载到内存储存器中排序 2、外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 常见的排序算法分类如下所示,外部排序先略过。#mermaid-svg-q0D3Hnei9tku3MNp .label{font-family:'trebuchet ms', verdana, arial;font-fami原创 2021-01-25 10:33:14 · 136 阅读 · 0 评论 -
数据结构和算法学习第五节 递归
递归概述应用案例概述 简要的说:递归就是自己调用自己,每次调用是传入不同的变量。递归有助于解决复杂问题,同时让代码变得简洁。 简单的使用案例public class Test { // 举例1 public static void test(int n) { if (n > 2) { test(n - 1); } System.out.println("n= " + n); }原创 2021-01-22 19:36:56 · 170 阅读 · 4 评论 -
数据结构和算法学习第四节 栈的应用与扩展 波兰表达式
栈的应用与扩展前缀、中缀、后缀表达式前缀表达式中缀表达式后缀表达式逆波兰计算器(后缀表达式计算)中缀表达式转后缀表达式前缀、中缀、后缀表达式前缀表达式 前缀表达式:也称为波兰表达式,前缀表达式的运算符位于操作数之前,例如(3+4)×5-6对应的前缀表达式就是 - × + 3 4 5 6。 (3+4)×5-6是中缀表达式 前缀表达式的计算机求值过程 从右至左扫描表达式,遇到数字时,将数字压入到数栈,遇到运算符时,弹出栈顶的两个数(栈顶元素和次栈顶元素),并使用运算符进行相应的计算,原创 2021-01-21 14:10:40 · 145 阅读 · 0 评论 -
数据结构和算法学习第三节 栈
栈概述栈的代码实现(使用数组实现)案例概述 1、栈(stack)是一个先入后出的有序列表 2、栈(stack)限制线性表中元素的插入和删除,只能在线性表的同一端进行操作的一种特殊线性表,允许插入和删除的一端是变化的一端,称为栈顶(Top),另一端是固定的一端称为栈底(Bottom); 3、新增元素:最先放入栈的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。 入栈示意图 元素出栈示意图 应用场景简要介原创 2021-01-20 19:29:58 · 127 阅读 · 1 评论 -
数据结构和算法学习第二节 链表
链表单链表单链表概述单链表实现单链表案例单向链表解决约瑟夫问题双向链表概述单链表单链表概述 基本介绍 链表示有序的,但是存储的地址不一定示连续的,存储示意如图下: 简要说明,head头指针指向的是 data域a1,a1的next域指向下一个存储的节点,链表存储的数据并不一定是连续的。 1、链表是以节点的方式存储的 2、每个节点包含data域(存储数据)、next域指向的下一个存储的节点 3、链表的各个节点不一定是连续存放的 4、链表可以有头节点,原创 2021-01-18 15:09:40 · 281 阅读 · 1 评论 -
数据结构和算法学习第一节 稀疏数组与队列
稀疏数组前言稀疏数组稀疏数组案例队列前言 数据结构和算法的在程序开发中是十分重要的,算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算。 数据结构和算法的关系 1、数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以写出更加有效率的代码。 2、程序=数据结构+算法。 3、数据结构是算法的基础,学算法之前必须要有扎实的数据结构知识。 数据结构的分类 数据结构包括线性结构和非线性结构。 1、线程结构原创 2021-01-12 11:33:49 · 140 阅读 · 1 评论