java常用算法及数据结构
文章平均质量分 74
qq_32182461
这个作者很懒,什么都没留下…
展开
-
常用算法之选择排序
选择排序的基本思想:在已给的数组中,首先挑选出最小的数之后跟第一个位置的数交换,因为每次都要数据之间的比较,所以选择排序比较适合杂乱的数据,对于已经有序的数列,则排序的性能不是很好。算法的实现思路:我们可以每次将数组的第一位置的数作为最小的数之后查找除此数之外比它小的数,附设一个指针来指向当前最小数的位置,因为一次比较,不可能找出一轮循环中最小的数。算法实现: package sort;/...原创 2018-03-11 10:25:10 · 129 阅读 · 0 评论 -
java常用数据结构之hofmann树
霍夫曼树的相关概念:路径:节点到根节点之间的路线就是该节点的路径路径长度:节点到根节点之间的线段的个数节点的权值:节点的参数值节点的带权路径长度 : 节点的权值跟节点的路径长度的乘积树的带权路径长度:所有节点的带权路径长度之和霍夫曼树也叫做最优二叉树:原因就是:霍夫曼树的带全路径长度是最小的构建霍夫曼树的思想:1.寻找数组中权值最小的两个数2.将两个数的和放入数组再次寻找权值最小的两个数3.重复步...原创 2018-03-13 13:12:43 · 161 阅读 · 0 评论 -
java常用算法之广度优先遍历
广度优先遍历思想:按层次来遍历节点结构,将每一层的节点都遍历完再继续遍历下一层广度优先遍历算法实现思想:借助队列来实现算法,在队列元素不为空的情况下,不断的弹出对首元素,在把与对首元素相邻接的节点放入队列中。广度优先遍历算法实现:import java.util.ArrayDeque;import java.util.Queue;//图的广度优先遍历public class img2 {...原创 2018-03-19 10:43:35 · 219 阅读 · 0 评论 -
java常用算法之树的遍历
二叉树的遍历方式有先序遍历,中序遍历,后序遍历。先序遍历:先访问根节点,后访问左孩子,之后访问右孩子中序遍历:先访问左孩子,之后访问根节点,之后访问右孩子后序遍历:先访问左孩子,后访问右孩子,之后访问根节点先序遍历算法思想:1.声明一个list数组2.声明一个节点的数据结构node3.从二叉树的根节点 开始,先将二叉树的根节点存入数组4.访问该节点是否有左孩子,若没有那么记录该节点5.访问该节点有...原创 2018-03-12 18:08:18 · 286 阅读 · 0 评论 -
java常用算法之堆排序
堆排序,是一种运用数组来存储数据,但是对元素排序时却使用了二叉树结构思想来进行排序的算法。排序中的堆实际上就是一个完全二叉树的结构,完全二叉树的概念我之前说过,这里就不再赘述,二叉树中,元素中若双亲节点比孩子节点大,那么就是大根堆,若小,那么就是小根堆。堆排序的思想:完全二叉树中节点之间关系明确,节点 i 的左右孩子分别是 2i 和 2i+1(这是节点元素在数组中从索引为1开始存储的对应关系),若...原创 2018-03-12 10:29:22 · 163 阅读 · 0 评论 -
常用数据结构之树的基本知识
树的概念:树是n个节点的有限集树形结构:非线性数据结构树的相关概念:1.节点:节点就是树中的元素2.度:节点拥有的树的个数3.叶子/终端节点:度为零的节点4.非终端节点/分支节点:度不为零的节点5.子孙:该节点所拥有的其他节点6.孩子:该节点子树的根节点7.层次:树的层次就是从根节点开始,节点所在的位置,节点层次最大的成为数的深度8.森林:m个互不相交的树的集合二叉树:概念:树的另外一种形式,树中...原创 2018-03-11 17:33:33 · 249 阅读 · 0 评论 -
java常用算法之快速排序
快速排序的思想:用分治的策略,将数组分的越来越小,再每组中来比较数组元素之间的大小快速排序的实现方式:1.分别设置两个指针来指向数组的首元素和尾元素2.一般将数组的首元素来作为一个枢纽元素(也就是其他的元素需要跟这个元素来比较大小,比这个元素大的需要放在它的右边,比它小的需要放在这个元素的左边)3.采用递归的思想来实现上述两步。快速排序的实现代码:public class fastSort { ...原创 2018-03-11 12:06:06 · 186 阅读 · 0 评论 -
java常用算法之冒泡排序
冒泡排序的思想:数组中的相邻元素进行比较,若发现发现跟比较策略相同那么交换两者的位置,最后最大或者最小的元素会被放在数组的最后面。冒泡排序的实现方式:首先确定遍历次数,之后从数组元素的首位元素开始跟相邻的元素进行比较。实现代码: //冒泡排序//思想:从第一个位置开始//让相邻的元素比较大小并且交换//每一趟都会将最大的放在最后面//所以每趟进行交换的数组个数都会减少一个 p...原创 2018-03-11 11:16:23 · 126 阅读 · 0 评论 -
常用算法之希尔排序
希尔排序是对直接插入排序的改进改进的地方:将按一定的规模分成几个小组,再每个小组中来分别进行直接插入排序希尔排序的基本思想:按照一定的分组规模,将数组分成几个小组,分别对数组进行插入排序,一般分组规模是按照当前数组的长度/2来获取的希尔排序的实现方法:1.按照将数组/2的规模来分组,得到的数是几,那么也就意味着,需要分别进行几次插入排序 2.组分好之后,需要确定每组的首元素,之后才能确定每组的其他...原创 2018-03-11 10:57:56 · 154 阅读 · 0 评论 -
常用算法之直接插入排序
直接插入排序的原理:将数组分为有序的数组和无序的数组两个,在无需的数组中挑出一个数插入到已经有序的数组中直接插入排序的实现思路:程序开始可以将数组的第一个位置的数作为有序的数组,之后再将后面的数组元素与有序的数组一一比较,选择合适的位置插入。直接插入排序特点:对于已经有序的数组元素来说,效率很高,因为直接插入排序可以知道当前数组是否有序。算法实现:package sort; /** ...原创 2018-03-11 10:37:27 · 162 阅读 · 0 评论 -
java常用算法之深度优先遍历
深度优先遍历是图的一种遍历方式,当然也可以用在对树的遍历,类似于树的先序遍历,是先序遍历的推广深度优先遍历思想:1.使用图的邻接矩阵的存储方式来存储图中每个节点之间的对应关系2.使用一个标记数组来标记图中的节点是否被访问过3.判断节点之间是否有联系4.若有联系,比如i j 之间的有联系,就递归的再次访问 j 节点是否跟其他节点之间有关系5.重复 3 4 步骤深度优先遍历算法://深度...原创 2018-03-14 15:54:34 · 397 阅读 · 0 评论