![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java数据结构与算法分析
文章平均质量分 56
羊抑
Be Stronger.
展开
-
树的基础知识
对于任意节点i,i的深度为根到该节点i的唯一路径的长,根的深度为0,树的深度等于最深的树叶的深度;i的高度为节点i到一片树叶的最长路径的长,所有树叶的高度为0,一棵树的高等于根的高;树的深度=树的高。1.树的实现原创 2017-11-13 11:17:18 · 154 阅读 · 0 评论 -
交换排序——快速排序
1.基本思想:采用分治的思想。快速排序通过选择一个元素,该元素称为枢轴元素或切分元素,然后将它放到一个合适的位置上,使得它前面的元素不大于它,它后面的元素不小于它,然后将枢轴元素为分界点,两边的数组也采取类似的方法,即选取枢轴元素,使得前面的元素不大于它,后面的不小于它,重复进行下去,直到数组里面只有一个元素(递归退出条件)。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j...原创 2018-03-13 19:12:00 · 142 阅读 · 0 评论 -
交换排序——冒泡排序
1.基本思想:设想被排序的记录关键字保存在数组R[1...n]中,将每个记录R[i]看做是重量为R[i].key的气泡。根据轻气泡不能再重气泡之下的原则,从右往左扫描数组R;凡扫描到违反本原则的轻气泡,就使其向上漂浮,每次冒出剩余最小的气泡。如此反复,直到最后任何两个气泡都是轻者在上,重者在下为止。2.java实现public void bubbleSort(int []a) { int le...原创 2018-03-13 16:16:00 · 124 阅读 · 0 评论 -
归并排序
1.基本思想将两个或两个以上的有序表合成一个新的有序表。先将N个数据看做N个长度为1的表,将相邻的表成对合并,得到长度为2的N/2个有序表,进一步讲相邻的合并,得到长度为4的N/4个有序表,以此类推,知道所有数据均合并成为一个长度为N的有序表。2.java实现递归实现 public void mergeArray(int a[],int first,int mid,int last,int tem...原创 2018-03-16 15:21:45 · 145 阅读 · 0 评论 -
选择排序——堆排序
预备知识堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组...转载 2018-03-15 16:12:01 · 848 阅读 · 0 评论 -
插入排序——希尔排序
希尔排序算法思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。本质是分组插入排序,每次将较小的元素插入到前面,较大的元素留在后面。排序过程如下:以26、53、67、48、57、13、48、32、60、50为例,1、第一趟排序以n/2即10/2=5为间隔26、53、67、48、57...原创 2018-01-16 21:50:18 · 244 阅读 · 0 评论 -
插入排序——直接插入排序
一、直接插入排序直接插入排序的基本思想是:将一个记录插入到已排好序的有序表中,从而得到一个新的有序表。设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3. i++并重复第二步直到i==n-1。排序完成。java实现原创 2018-01-16 20:32:56 · 179 阅读 · 0 评论 -
查找--线性表
查找基本概念:(1)动态查找和静态查找表 若在查找的同时对表做修改操作(如插入和删除),则相应的表称之为动态查找表。否则为静态查找表。(2)内查找和外查找 若整个查找过程都在内存进行,则称之为内查找;反之,若查找过程中需要访问外存,则称之为外查找。1.顺序查找从头到尾扫描比较。优点算法简单,对表的结构没有要求;缺点是查找效率低。java实现:转载 2017-11-30 12:05:34 · 265 阅读 · 0 评论 -
二叉树
二叉树(binary tree)每个节点都不能有对于两个的儿子。二叉树平均深度为;对于二叉查找树,其深度平均值是;1.实现二叉树节点最多有两个子节点,所以可以保存直接链接到它们的链(树的话子节点个数不确定,保存所有到子节点的直接链接不可行)。二叉树节点类,元素(element)信息加上两个到其他节点的引用(left和right):class BinaryNode{原创 2017-11-13 12:19:03 · 223 阅读 · 0 评论 -
选择排序——直接选择排序
选择排序:每一趟从待排序的记录里选取关键字最小的记录,顺序放在已经排好序的子文件最后,直到全部记录排序完毕,一、直接选择排序1.基本思想:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,...原创 2018-03-15 14:57:01 · 722 阅读 · 0 评论