算法与数据结构
提升Java排序和数据结构
yan_pengfei
这个作者很懒,什么都没留下…
展开
-
算法与数据结构(十一)之AVL平衡树
平衡二叉树 满二叉树(有左右节点的)肯定是平衡二叉树 完全二叉树(缺失部分在右子树)也是平衡二叉树 对于任意一个节点,左子树和右子树的高度差不能超过1 平衡二叉树的高度和节点数量之间的关系是O(logn) AVL树 自平衡二叉树 标注节点高度,所有叶子节点的高度为1,非叶子节点高度为左右孩子节点中高度较高的的节点高度再加1 计算平衡因子,即左右子树高度差的绝对值,如果存在平衡因子大于1,则就是不平衡 ...原创 2021-01-18 09:39:13 · 130 阅读 · 0 评论 -
算法与数据结构()之冒泡排序和希尔排序
冒泡排序 O(n²)级别算法 每次比较对比相邻两个元素位置, 如果后面的元素大于前面的元素, 则进行位置交换 代码实现 package com.yan.study.algorithm.bubblesort; //冒泡排序的实现 public class BubbleSort { private BubbleSort(){}; //[5,3,1,6,7,9] public static <E extends Comparable<E>> void b原创 2021-01-17 17:30:13 · 170 阅读 · 1 评论 -
算法与数据结构(十一)最大堆
二叉堆: 是一个完全二叉树 堆中的每个节点总是大于等于(或小于等于)子节点,对应的就是最大最小堆 可以用数组存储二叉堆 索引和节点之间的对应关系,索引从0开始 给定一个索引可以知道这个索引的父节点索引,parent(i) = (i-1)/2 给定一个索引可以知道这个索引的左子树的索引,leftChild(i) = 2*i +1 给定一个索引可以知道这个索引的右子树的索引,rightChild(i) = 2*i +2 最大堆的实现 package com.yan.study.algorit原创 2021-01-11 15:04:44 · 122 阅读 · 0 评论 -
算法与数据结构(十)二分搜索树
二叉树(binary tree)是指树中节点的度不大于(小于等于都满足条件)2的有序树,二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。 二分搜索树是一颗基于二叉树动态数据结构。每一颗子树也是二分搜索树。存储的元素必须有可比较性。 每个节点的值都大于其左子树的所有节点的值 每个节点的值都小于其右子树的所有节点的值 二分搜索树数据结构的实现 package com.yan.study.algorithm.binary原创 2021-01-09 15:31:29 · 113 阅读 · 0 评论 -
算法与数据结构(九)二分搜索法
二分搜索法:是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。最坏的情况下用O(log n)完成搜索任务。 ...原创 2020-12-30 13:53:39 · 204 阅读 · 2 评论 -
算法与数据结构(八)快速排序
基本思想是:首先设定一个分界值,通过该分界值将数组分成左右两部分,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。而这个分界值所在的位置通常是partition函数。 算法的实现 package com.yan.study.algorithm.quicksort; import javax.jnlp.ExtendedService; import原创 2020-12-25 10:31:58 · 142 阅读 · 0 评论 -
算法与数据结构(七)之归并排序
归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 算法的实现 package com.yan.study.algorithm原创 2020-12-18 15:23:30 · 146 阅读 · 0 评论 -
算法与数据结构(六)之递归
定义:程序调用自身的编程技巧,先递进,再回归。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 构成递归需具备的条件: 子问题须与原始问题为同样的事,且更为简单; 不能无限制地调用本身,须有个出口,化简为非递归状况处理 数据的结构形式是按递归定义,如二叉树、广义表 package com.yan.study.algorithm.queue; /** * letCode中链表的递归删除 * @param */ /** * Definition for sing..原创 2020-12-11 15:03:23 · 134 阅读 · 0 评论 -
算法与数据结构(五)之链表LinkedList
数据存储在节点Node中,真正的动态,不需要处理固定容量的问题。 class Node{ E e; Node next; }原创 2020-12-09 14:42:53 · 125 阅读 · 0 评论 -
算法与数据结构(四)之栈与队列
Stack:是一种后进先出LIFO的线性数据结构。只能从一端添加元素,也只能从同一端取出元素,这一端就是栈顶。 栈的应用: 无处不在的Undo操作(撤销) 程序调用的系统栈 括号的匹配LeetCode 栈的实现 interface Stack<E> void push(E e) E pop E peek int getSize() boolean isEmpty Queue:是一种先进先出FIFO的线性数据结构。只能从一端(队尾)添加元素,从另一端(队首)取出原创 2020-12-08 17:51:02 · 111 阅读 · 0 评论 -
算法与数据结构(三)之动态数组
package com.yan.study.algorithm.array; import javafx.scene.control.TableView; /** * 基于Java数组封装属于自己的数组类 */ public class Array<E>{ private E data[]; private int size;//数组中实际有多少个元素,初始指向的位置是第一个没有元素的索引 /** * 构造函数传入容量为capacity的构造Arra.原创 2020-12-07 19:45:07 · 102 阅读 · 0 评论 -
算法(二)之选择排序与插入排序
选择排序:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。 for( int i = 0;i< data.length;i++){ int minIndex = i; for( int j = i+1;j<data.length;j++){ if( data[j] < data[i]){原创 2020-11-25 20:33:29 · 234 阅读 · 1 评论 -
算法(一)之线性查找法
线性查找的定义:又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功。否则失败。 //代码示例 public static <E> int search( E []data,E target){ for( int i = 0; i< dada.length; i++){ if( data[i].equals(target) ){ return i;原创 2020-11-23 16:27:21 · 343 阅读 · 0 评论 -
jvm的性能调优的学习(一)
1 基于jdk命令行的工具 1.1jvm的参数类型 标准参数 -help -server -client -version -showversion -cp -classpath X参数 非标准化参数 -Xint :解释执行 -Xcomp : 第一次使用就编译成本地代码 -Xmixed: jvm决定是否编译成本地代码 XX参数 Boolean类型 格式:-XX:[+-]<name>标识启用或者禁用name属性 案例:-XX:+UseG1Gc key=valu.原创 2020-06-10 16:52:34 · 123 阅读 · 0 评论 -
JAVA泛型---------参数化类型
https://www.cnblogs.com/coprince/p/8603492.html从这里复制来。 1. 概述 泛型,即“参数化类型”。顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制...原创 2019-09-23 16:55:11 · 1069 阅读 · 0 评论