![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
cccrush_
勿在浮沙筑高台
展开
-
学习笔记——java集合类:
首先看图对java集合框架有个大致认识1.JDK提供一系列类,这些类可以存储任意类型的对象,并且长度可变,统称为集合。2.集合按存储结构可分为单链集合(Collection)和双链集合类(Map) Collection(根接口)有两个接口List,Set(子接口) Map接口用于存储具有键(Key)、值(Value)映射关系的元素。主要实现类又...原创 2018-09-09 13:08:40 · 241 阅读 · 0 评论 -
快速排序——Java实现
什么是快速排序: 选取一个中间数(或者称为基准数,叫什么不重要,姑且称之为key),然后将数组分为两部分。这两部分的特点是什么呢?左边的部分全部小于key,右边部分全部大于key。然后key的左边、右边分别重复这一动作,完事!甚至从上面的理解性的话里面都可以看出来,while,if判断,递归。没了。 加深理解: 1.拿到一个基准数key,先从右边开始找一个小于key的,...原创 2018-12-02 15:27:17 · 112 阅读 · 0 评论 -
Java算法 —— 蓄水池问题
题目: 给出了指定高度的任意两个板子,每个木板位置间隔相等,由你随机组合,怎么实现装最多的水。分析:假设水池厚度相同,于是水容量计算公式: 水容量 = 板子距离*板子高度 ...原创 2018-09-15 00:23:24 · 3538 阅读 · 0 评论 -
哈夫曼二叉树的简单构建
/* * 1、统计学生学分 * 学生考试结果 A B C D * 学分增加 5 4 3 0 * 人数 10 50 30 10 * * 代码1: * if A : +5 * else if B : +4 * else if C : +3 * else D :0 * 10 + 50*2 +30*3 +10*3 * 代码2: * if B :+4 * else if C:+3 * else if A: +5 *原创 2018-09-06 11:08:12 · 2134 阅读 · 1 评论 -
算法基础——简单的堆排序
前面一点小东西: 1.堆通常是一个可以被看做一棵树的数组对象 2·堆中某个节点的值总是不大于或不小于其父节点的值 3·堆总是一棵完全二叉树 4.堆中每次都只能删除第0个数据 其中我们将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。 ...原创 2018-08-22 20:31:33 · 216 阅读 · 0 评论 -
算法基础——冒泡排序,选择排序和插入排序
冒泡排序: 从a[index=0]开始比较a[0]和a[1],按照程序给定判断是否交换位置,然后a[1]和a[2]比较,一直到a[max]。此时a[max]一定是要求的最大或者最小,下一次循环不需要再比较,所以length-i。 5,4,3,2,1第一次: 4,3,2,1,5第二次: 3,2,1,4,5第三次: ...原创 2018-08-25 17:26:39 · 154 阅读 · 0 评论 -
数据结构——数组以及n维数组
一维数组1.数组的概念 数组其实就是一个可以装任意类型数据的集合,可以看作为一个容器。虽然可以装任意类型的数据,但是数组只要定义之后,数组里面就是只能装同一数据类型的元素。 数组是属于引用数据类型(数组名中存储的是内存首地址) 数组在内存中是一个连续的存储空间。 数组本身只有length属性(length获取数组中能存储的数据个数)2.数组的好处...原创 2018-08-26 11:41:01 · 4492 阅读 · 0 评论 -
数据结构——java自定义数组队列
什么是数组队列? 数组队列是利用数组这种数据结构来处理实现多个数据的类,增加了数组的灵活性。(在程序中数组的灵活性不够,因为定义的长度是死的。如果定义长了浪费内存,短了不够用)数组队列的实现 1.定义接口,定义需要的抽象方法 a.增加元素的方法;在固定的位置 ,添加元素的方法; b.删除该数组中一个元素的方法(根据元素进行删除) ...原创 2018-08-26 15:09:08 · 428 阅读 · 0 评论 -
数据结构——java自定义单链表及反转
其实我不想写但是还是要写的的前景知识:什么是链表 链式存储结构是一种基于指针实现的存储结构。我们把一个数据结构和一个指针称为结点。链式存储结构用指针把相互关联的点连接起来。链式存储结构的线性表就称为链表什么是单链表 链表的每个结点中只包含一个指针域,叫做单链表(即构成链表的每个结点只有一个指向直接后继结点的指针)。结点结构如下: 关于头节点...原创 2018-08-30 16:18:15 · 936 阅读 · 0 评论 -
表达二叉树的构建
在用java实现表达式二叉树之前,先要明白究竟什么是表达式二叉树。 举个例子,有表达式“(a+b×(c-d))-e/f”,现在将该表达式通过树形图来表示。那么究竟该如何表示呢?下图就是一个绘制好的表达式二叉树模型。所谓的规则就是:运算符放在结点位置,而数字放在子节点位置。通过这样的规则构成一个二叉树,又由于存储的是一个表达式,因此称为“二叉树表达式” ...原创 2018-09-06 00:35:24 · 3251 阅读 · 0 评论 -
Java实现二分算法的查找
1.二分查找要求:1.必须是顺序结构2.必须是大小有序排列2.原理:将数组分为3部分,分别是中值前,中值,中值后(所谓的中值是指数组中间的那个数);将想要查找的数先和中值对比。若小于中值,则在中值前面找;若大于中值,则在中值后面找;等于中值,则返回。依次递归继续完成将中值的前半部分和后半部分的分解查找3.分别有循环和递归两种方式实现public class erf...原创 2018-12-02 16:42:25 · 172 阅读 · 0 评论