数据结构
小胡同学~
一个热爱代码的小猿~
展开
-
JavaSE总结 ---思维导图
用思维导图的方式进行对 JAVA 语法知识的总结。原创 2019-11-28 23:34:59 · 210 阅读 · 0 评论 -
对象的比较 Java
什么是比较?在计算机领域中,比较分为两种:身份的比较值的比较而在Java中主要有三种比较方式:Object.equalsComparableComparator下面我们逐个总结:== VS equalsp == q 表示的是 p 和 q 两个引用指向同一个对象p.equals(q) 表示 p 指向的对象 和 q 指向的对象是否是值语义相等的覆写前public cl...原创 2019-11-18 21:29:13 · 146 阅读 · 0 评论 -
归并排序 Java
归并排序的原理归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子 序列段间有序。归并排序的实现public class Sort { public static void mergeSort(int[] arra...原创 2019-11-18 19:59:08 · 210 阅读 · 0 评论 -
快速排序 Java
快速排序原理从待排序区间选择一个数,作为基准值(pivot);Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可以包含相等的)放到基准值的右边;采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度 == 1,代表已经有序,或者小区间的长度 == 0,代表没有数据。快速排序的实现public class S...原创 2019-11-18 19:40:28 · 170 阅读 · 1 评论 -
冒泡排序 Java实现
冒泡排序的原理在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序冒泡排序实现public class Sort { public static void bubbleSort(int[] array) { for (int bound = 0; bound < array.length; bound++) { ...原创 2019-11-18 19:20:47 · 131 阅读 · 0 评论 -
堆排序 Java
堆排序的原理基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的 数。注意: 排升序要建大堆;排降序要建小堆。堆排序实现升序为例public class heapSort { public static void heapSort(int[] array) { //根据给的数组来创建堆 creatHeap...原创 2019-11-18 19:12:53 · 135 阅读 · 0 评论 -
Java实现堆
什么是堆?要想实现堆,先要知道什么是堆和堆都有那些操作。**堆(英语:heap)**是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。通俗的说堆是使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。 一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪...原创 2019-11-18 18:59:18 · 545 阅读 · 0 评论 -
选择排序 Java
直接选择排序-原理每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完 。//升序public static void selectSort(int[] array) { for (int bound = 0; bound < array.length; bound++) { //待排序区间[bound, a...原创 2019-11-13 22:52:39 · 124 阅读 · 0 评论 -
希尔排序 Java
希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有 距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取重复上述分组和排序的工作。当到达=1时, 所有记录在统一组内排好序。希尔排序是对直接插入排序的优化。当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体...原创 2019-11-13 22:42:36 · 260 阅读 · 0 评论 -
插入排序 Java
插入排序的原理:将整个数组分为两个区间:已排序区间 [0 bound);待排序区间 [bound cur);具体操作:每次在待排序区间选择第一个元素,在有序区间从后往前和这个元素进行比较,在符合排序规则的位置进行插入。如果不满足,那么就将已经排序区间的元素往后挪一位。...原创 2019-11-13 22:05:06 · 135 阅读 · 0 评论 -
LeetCode 155. 最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);min...原创 2019-11-07 22:21:34 · 114 阅读 · 0 评论 -
杨辉三角Java
什么是杨辉三角?杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。这样的三角形排列就被称为杨辉三角。我们能发现一些规律:每一行的第一个元素和最后一个元素是1每一行除了第一个和最后...原创 2019-11-07 21:34:50 · 219 阅读 · 0 评论 -
Java"二叉树"小结
二叉树总结1.树形结构什么是树形结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起 来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父 结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。节点的度:一个节点含有的子树的...原创 2019-11-03 17:31:46 · 213 阅读 · 0 评论 -
Java"栈"和"队列"总结
栈什么是栈?栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。我们可以把压栈和出栈这个过程想像成我们在地上放了一个箱子,这时候我们给箱子里面一本书,当我们再想给箱子里放一本书的时候,我们只能把新放的一本书放在之前那本的上面...原创 2019-11-02 17:17:19 · 274 阅读 · 0 评论 -
一个简单的发扑克牌小项目
这个小项目是:给三名玩家轮流分发 5 张扑克牌,并且扑克牌可以重洗。首先我们要现有一副新的扑克牌,然后我们对这副牌进行洗牌操作。下来给三名玩家轮流分发。首先扑克牌具有的属性:花色大小我们先创建一个 Card 类:class Card { public String suit;//花色 public String rank;//大小 @Override ...原创 2019-10-29 17:47:56 · 515 阅读 · 0 评论 -
Java实现无头双向有环链表
双向有环链表意思是我们能通过当前节点可以保存上一个节点和下一个节点的信息,并且各个节点连接成一个环形,也就是说我们可以通过正向(next)遍历这个链表,也可以逆向(prev)遍历这个链表。这样我们就可以完成无头双向有环链表的基本操作了。class DLinkedNode { public int val = 0; public DLinkedNode prev = null;...原创 2019-10-13 22:02:23 · 209 阅读 · 0 评论 -
简单链表实现Java
我们实现一个无头单向链表,它包含有4个简单的功能,增删查该,其中增我们分为头插法和尾插法还有指定位置插入。包含删除第一次出现的指定元素和删除所有出现的指定元素。查包含获取链表中有效元素个数和元素是否存在于链表中。下面是实现链表的代码class LinkedNode { public int data = 0; public LinkedNode next = null; ...原创 2019-09-27 18:21:36 · 138 阅读 · 0 评论 -
java实现简单顺序表
要实现顺序表首先要了解什么是顺序表:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中...原创 2019-09-23 16:44:54 · 707 阅读 · 2 评论