数据结构与算法
文章平均质量分 74
Hacah
在一直学习,记录笔记
展开
-
Java实现二叉树的前、中、后序遍历
前言把学习的笔记记录下来,希望能帮助到你。实现思想访问根节点访问当前节点的左子树,递归(即把左子树当成一课新的树,重新执行1-3步)访问当前节点的右子树,递归中序遍历的实现思想是:访问当前节点的左子树,递归访问根节点访问当前节点的右子树,递归后序遍历的实现思想:访问当前节点的左子树,递归访问当前节点的右子树,递归访问根节点代码实现以这个图的树作为测试的树。实现遍历package com.datastructure.tree;/** * @author Ha原创 2021-01-19 23:15:52 · 111 阅读 · 0 评论 -
图解堆排序--超简单
堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的定义就是:大顶堆:arr转载 2021-01-17 21:04:19 · 122 阅读 · 0 评论 -
数据结构-树的概述
这里写目录标题前言一、树的概述二、树的专用术语三、二叉树的概念满二叉树完全二叉树前言最近学习数据结构,把自己整理的笔记记录起来。方便复习查看。如果有帮助到你,点个赞,共勉!!!一、树的概述树是一种非线性的数据结构,存储的是具有“一对多”关系的数据元素的集合,树有多个指向的节点,所以非线性数据结构。二、树的专用术语节点根节点 :如果一个结点没有父结点,那么这个结点就是整棵树的根结点。父节点子节点叶子节点 (没有子节点的节点)节点的权(节点值)路径(从 root 节点找到该节点的路线原创 2021-01-16 19:21:57 · 859 阅读 · 0 评论 -
一看就懂-图解二分查找和线性查找
查找是在大量的信息中寻找一个特定的信息元素,在某个容器中找到某数据所使用的算法,就是查找算法。一、线性查找给定一个查找值,在查找的容器中逐个查找给定值。线性查找是最简单的查找算法。代码实现:创建一个数组{1, 9, 24, 20, 16, 14, 265}存储数据,遍历数组对比查到对应数据,拿出数据的坐标,得到数据。package com.datastructure.search;/** * @author Hacah * @date 2020/11/10 22:08 */publi原创 2021-01-09 23:13:20 · 585 阅读 · 0 评论 -
《基数排序》的思想以及代码实现--排序算法(七)
文章目录前言1.排序算法的分类一、基数排序(Radix Sort)的基本概念1.基本介绍2.执行逻辑3.图解过程4.代码实现5.算法特性四、排序算法情况前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、基数排序(Radix Sort)的基本概念1.基本介绍基数排序(radix sort)属于“分配式排序”(distribution so原创 2021-01-05 01:16:46 · 198 阅读 · 0 评论 -
《归并排序》的思想以及代码实现--排序算法(六)
文章目录前言1.排序算法的分类一、(Quick Sort)的基本概念1.基本介绍2.执行逻辑3.图解过程4.代码实现四、排序算法情况前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、(Quick Sort)的基本概念1.基本介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部原创 2021-01-02 23:41:35 · 143 阅读 · 0 评论 -
散列(hash)算法与应用
散列(hash)算法与应用目录散列(hash)算法与应用一、散列(hash)算法1. 概念2.特点3.散列算法应用二、文章摘要算法(Message Digest)1.概念2.MD5算法分组操作三、安全散列(Secure Hash Algorithm)1.概念2.分类四、SHA-1与MD5之间的异同相同点:不同点:散列(hash)算法与应用最近在准备期末的考试,复习然后顺便写下来记录笔记。本笔记记录的是SHA和MD算法。一、散列(hash)算法1. 概念把任意长度的输入通过单向散列函数H()计原创 2020-11-23 12:55:14 · 1461 阅读 · 0 评论 -
《快速排序》的思想以及代码实现--排序算法(五)
文章目录前言1.排序算法的分类一、(Shell Sort)的基本概念1.基本介绍2.执行逻辑3.图解过程4.代码实现四、排序算法情况前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、(Shell Sort)的基本概念1.基本介绍2.执行逻辑3.图解过程4.代码实现四、排序算法情况相关文章:《冒泡排序》的思想以及代码实现–排序原创 2020-11-05 12:29:15 · 205 阅读 · 1 评论 -
《希尔排序》的思想以及代码实现--排序算法(四)
文章目录前言1.排序算法的分类一、插入排序(Insertion Sorting)的基本概念1.基本介绍2.执行逻辑前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、插入排序(Insertion Sorting)的基本概念1.基本介绍插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。2.执行逻原创 2020-10-28 15:54:37 · 83 阅读 · 0 评论 -
《插入排序》的思想以及代码实现--排序算法(三)
文章目录前言1.排序算法的分类一、插入排序(Insertion Sorting)的基本概念1.基本介绍2.执行逻辑二、图解过程三、代码实现四、排序算法的情况前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、插入排序(Insertion Sorting)的基本概念1.基本介绍插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素原创 2020-10-12 21:25:08 · 103 阅读 · 0 评论 -
《选择排序》的思想以及代码实现--排序算法(二)
文章目录前言1.排序算法的分类一、选择排序的基本概念二、图解三、举例代码说明前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、选择排序的基本概念选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第原创 2020-10-11 19:09:46 · 447 阅读 · 0 评论 -
《冒泡排序》的思想以及代码实现--排序算法(一)
文章目录前言1.排序算法的分类一、冒泡的基本概念二、图例说明三、代码实现前言1.排序算法的分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类一、冒泡的基本概念冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒原创 2020-09-28 22:29:30 · 288 阅读 · 0 评论 -
【记】链表概念与Java链表实现
文章目录1.特点图示2.代码实现1.特点链表是非常典型和常用的一种线性数据结构。它有以下几个特点:链表是以节点的方式来存储,是链式存储,有序线性表。每个节点包含 data 域, next 域:指向下一个节点.内存中链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定图示内存展示:逻辑展示:2.代码实现package com.da...原创 2020-05-06 11:50:47 · 349 阅读 · 0 评论 -
【记】队列原理与Java数组实现队列
文章目录一.队列原理1. 特点二.数组队列实现1.思路2.实现3.实现的缺点一.队列原理1. 特点队列是一种线性的数据结构,有序的列表。队列依照先进先出(FIFO,first in first out)的特点进出数据,类比平常排队的概念。队列只允许在rear(后端)进,front(前端)出。图列说明:二.数组队列实现1.思路定义一个数组arr,声明两个变量rear和...原创 2020-05-03 19:39:30 · 133 阅读 · 0 评论 -
【记】稀疏数组代码实现
1.稀疏数组代码实现稀疏数组区别于正常数组,主要用于存储某些特殊数组数据。比如一个二维数组中有多个相同一样的值就可以使用稀疏数组去转换这个数组,然后存储这个数组,达到减少空间的算法。转换的形式:代码实现:package com.datastructure;/** * @author Hacah */public class SparseArray { pub...原创 2020-05-01 18:55:03 · 164 阅读 · 0 评论