Java数据结构
文章平均质量分 77
西风2022
这个作者很懒,什么都没留下…
展开
-
Java数据结构和算法(五)——链表
链表我们知道数组是一种通用的数据结构,能用来实现栈、队列等很多数据结构。而链表也是一种使用广泛的通用数据结构,它也可以用来作为实现栈、队列等数据结构的基础,基本上除非需要频繁的通过下标来随机访问各个数据,否则很多使用数组的地方都可以用链表来代替。但是我们需要说明的是,链表是不能解决数据存储的所有问题的,它也有它的优点和缺点。本篇博客我们介绍几种常见的链表,分别是单向链表、双向链表。链表(Lin...原创 2018-04-30 10:24:29 · 213 阅读 · 1 评论 -
Java数据结构和算法—归并排序
归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法描述归并操作的工作原理如下:第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序...原创 2018-05-06 11:00:52 · 201 阅读 · 0 评论 -
Java数据结构(一)--数组
所有的程序员都说数据结构和算法十分重要,是程序的灵魂。如果把一个可以解决某个特定问题的程序比作人的身体,那么数据结构和算法就是这具身体的灵魂、大脑。好的数据结构好比现实生活中的天才,那么不好的数据结构和算法就是现实生活中的脑残。下面我记录了我学习Java数据结构的第一节<数组>,并手动编写了数组的基本操作。 ①、如何插入一条新的数据项 ②、如何寻找某一特定...原创 2018-04-24 10:28:57 · 224 阅读 · 0 评论 -
Java数据结构(二)--冒泡、选择、插入排序算法
1、冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。 冒泡算法的运作规律如下: ①、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 ②、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数(也就是第一波冒泡完成)。 ③、针对所...原创 2018-04-25 23:07:54 · 117 阅读 · 0 评论 -
Java数据结构和算法(三)--栈
栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(...原创 2018-04-26 16:57:16 · 143 阅读 · 0 评论 -
Java数据结构和算法(四)--队列
队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端...原创 2018-04-27 16:45:49 · 140 阅读 · 0 评论 -
Java数据结构和算法—堆
堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树首先我们要知道用数组表示堆的一些要点。若数组中节点的索引为x,则: 节点的左子节点是 2*index+1, 节点的右子节点是 2*index+2, 节点的父节点是 (index-1)/2。删除:删除堆顶...原创 2018-05-11 22:37:42 · 106 阅读 · 0 评论 -
Java数据结构和算法(七)—树
下面我们将会介绍另外一种数据结构——树。前面我们介绍数组的数据结构,我们知道对于有序数组,查找很快,并介绍可以通过二分法查找,但是想要在有序数组中插入一个数据项,就必须先找到插入数据项的位置,然后将所有插入位置后面的数据项全部向后移动一位,来给新数据腾出空间,平均来讲要移动N/2次,这是很费时的。同理,删除数据也是。 然后我们介绍了另外一种数据结构——链表,链表的插入和删除很快,我们...原创 2018-05-05 11:29:31 · 187 阅读 · 0 评论 -
Java数据结构和算法(六)—递归
递归的定义递归,就是在运行的过程中调用自己。 递归必须要有三个要素: ①、边界条件 ②、递归前进段 ③、递归返回段 当边界条件不满足时,递归前进;当边界条件满足时,递归返回。实例:利用递归求一个数的阶乘n! = n*(n-1)*(n-2)*......1规定: ①、0!=1 ②、1!=1 ③、负数没有阶乘//利用递归进行求一个数的乘层 public static int getF...原创 2018-05-01 11:06:00 · 370 阅读 · 1 评论 -
Java数据结构和算法—快速排序
快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。一次快速步骤1)设置两个变量i、j,排序开始的时候:i=0,j...原创 2018-05-07 11:31:44 · 109 阅读 · 0 评论