Java数据结构
Fighting261
这个作者很懒,什么都没留下…
展开
-
排序
1 排序1.1 排序的概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。1.2 稳定性两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。2 七大基于比较的排序2.1 直接插入排序排序原理整个区间被分为有序区间无序区间每次选择无序区间的第一个元素,在有序区间内选择合原创 2020-05-31 18:39:08 · 762 阅读 · 0 评论 -
泛型
1 泛型类的定义1.1 语法class 泛型类名称<类型形参列表> {// 这里可以使用类型参数}class ClassName<T1, T2, ..., Tn> {}class 泛型类名称<类型形参列表> extends 继承类/* 这里可以使用类型参数 */ {// 这里可以使用类型参数}class ClassName<T1, T2, ..., Tn> extends ParentClass<T1> {// 可以只使用部原创 2020-05-31 15:52:15 · 183 阅读 · 0 评论 -
java对象的比较
1 元素的比较1.1 基本类型的比较在Java中,基本类型的对象可以直接比较大小。public class TestCompare {public static void main(String[] args) {int a = 10;int b = 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a == b);char c1 = 'A';char c2 = 'B';Sy原创 2020-05-30 17:04:06 · 191 阅读 · 0 评论 -
堆
1 堆的概念如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为 小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。v堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。2 堆的存储方式原创 2020-05-29 18:24:14 · 186 阅读 · 0 评论 -
二叉树
1 树型结构1.1 概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继。树是递归定义的。原创 2020-05-29 17:17:48 · 299 阅读 · 0 评论 -
栈和队列
1 栈1.1 栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据在栈顶。1.2 栈的实现public class MyStack<T> { public T[] elem; public int top; pub原创 2020-05-29 14:57:40 · 147 阅读 · 0 评论 -
无头双向链表
class Node { public int data;//数据 public Node next;//后继信息 public Node prev;//前驱信息 public Node(int data) { this.data = data; }}public class MyLinkedList { public No...原创 2020-05-02 16:29:32 · 236 阅读 · 0 评论 -
单链表
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 相比于顺序表,单链表有其独特的优点:任意位置插入删除时间复杂度为O(1) ,并且没有增容问题,插入一个开辟一个空间。但也有缺点,即以节点为单位存储,不支持随机访问。class Node { public int data; public Node next; public N...原创 2020-05-01 16:48:31 · 121 阅读 · 0 评论 -
顺序表
顺序表的概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。静态顺序表适用于确定知道需要存多少数据的场景.静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用public class MyArrayList { ...原创 2020-04-22 17:05:34 · 159 阅读 · 0 评论 -
时间复杂度和空间复杂度
1. 算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间...原创 2020-04-18 21:04:18 · 192 阅读 · 0 评论