Java数据结构与算法
鹭岛猥琐男
耐得住寂寞,才能守得住繁华
展开
-
排序算法:插入排序
1. 基本思想要排序的一组数中,假定前n-1个数已经排序好,现在将第n个数插入到前面的有序数列中,使得着n个数也是排好顺序的,如此反复循环,直到全部排好顺序。2. Java实现 /* * 插入排序 */ public static void insertSort(int[] arr) { int temp = 0; ...原创 2019-08-19 23:23:15 · 210 阅读 · 0 评论 -
排序算法:希尔排序
1. 基本思想希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,...原创 2019-09-10 20:05:45 · 248 阅读 · 0 评论 -
Java数据结构:树之红黑树
1. 概述在前面的篇章已经写了Java数据结构:树基础及二叉树,对于树已经有了一定的了解。而红黑树在树中是比较重要的一种,运用也比较多,比如HashMap的源码中就用到了红黑树。通过此篇对红黑树的了解,后续会写一篇关于HashMap源码的解析。2. 红黑树的定义:红黑树,R-B Tree,全称是Red-Black Tree,又称为“红黑树”。它一种特殊的二叉查找树,它满足二叉查找树的特...原创 2019-08-31 06:45:06 · 474 阅读 · 0 评论 -
Java数据结构:数组
1.概述数组是用于储存多个相同类型数据的集合。数组既可以存储基本数据类型,也可以存储引用数据类型。数组是一种最简单的数据结构,它占据一块连续的内存(即使在物理内存中不是连续的,在逻辑上肯定是连续的)并且顺序存储数据。2.数组的创建使用new操作符来创建数组,语法如下:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};或数据类型[] 数组名 = new...原创 2019-08-08 10:19:45 · 294 阅读 · 0 评论 -
Java数据结构:队列
1. 概述队列是“先进先出”(FIFO,First InFirst Out)的数据结构。队列的概念就好比乘火车时候买票的队伍,先到的人当然可以优先买票,买完后就从前端离去准备乘火车,而队尾的后端又陆续有新的乘客加入。它有下列特性:a. 先进先出(FIFO)。b. 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。 队列通常包括的两种操作:入队列 和 出队列。队列的示意...原创 2019-08-13 15:18:39 · 327 阅读 · 0 评论 -
Java数据结构:链表
1. 概述链表是一种数据结构,在内存中通过节点记录内存地址而相互链接形成一条链的储存方式。链表的插入和删除都比较快,缺点是查找比较慢。除非需要频繁的通过下标来随机访问数据,否则在很多使用数组的地方都可以用链表代替。相比数组而言,链表在内存中不需要连续的区域,只需要每一个节点都能够记录下一个节点的内存地址,通过引用进行查找,因此链表增删操作时间消耗很小,而查找遍历时间消耗很大。2. 链表的分...原创 2019-08-09 17:15:18 · 1546 阅读 · 0 评论 -
排序算法:冒泡排序
1. 基本思想冒泡排序算法是把较小的元素往前调或者把较大的元素往后调。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2. Java实现 /* * 冒泡排序 */ public sta...原创 2019-08-14 10:52:48 · 239 阅读 · 0 评论 -
排序算法:选择排序
1. 基本思想在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。2. Java实现 /* * 选择排序 */ public static void selectSort(int[] arr) { int temp; ...原创 2019-08-14 13:31:57 · 1038 阅读 · 0 评论 -
Java数据结构:树基础及二叉树
1. 树的简介1.1 树的定义树是一种特殊的数据结构,它可以用来描述有分支的结构,是由一个或一个以上的节点所组成的有限集合。1.2 树的特点a. 存在一个特殊的节点,称为根节点;b. 没有父节点的节点称为根节点;c. 每一个非根节点有且只有一个父节点;d. 除了根节点外,每个子节点可以分为多个不相交的子树;图中A节点就称为根节点,B、C、D 均为A的子节点。...原创 2019-08-14 14:01:36 · 443 阅读 · 0 评论 -
Java数据结构:栈
1. 概述栈(stack)又称为堆栈,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈通常包括的三种操作:push、peek、pop。push:向栈中添加元素。peek:返回栈顶元素。pop:返回并删除栈顶元素的操作...原创 2019-08-12 20:01:02 · 377 阅读 · 0 评论