
__8.2 算法
sunpy 孙培煜
万物之中,希望至美;至美之物,永不凋零。
展开
-
java实现希尔排序算法
1.希尔排序算法的思想其实希尔排序就是插入排序的提高版,原创 2016-11-07 16:36:37 · 361 阅读 · 0 评论 -
java实现二叉排序树的删除节点
1.二叉排序树删除节点的思路情况1:删除的当前节点无左右孩子节点,那么就直接将当前要删除的节点设置为null即可。情况2:删除的当前节点无左孩子节点,有右孩子节点,那么就将当前要删除的节点设置为右孩子节点即可。情况3:删除的当前节点无右孩子节点,有左孩子节点,那么就将当前要删除的节点设置为左孩子节点即可。情况4:删除的当前节点有右孩子节点也有左孩子节点,那么就选出右孩子树中最小的点原创 2017-06-01 15:47:41 · 5410 阅读 · 0 评论 -
java实现单链表
public class LinkTable { //尾插法创建单链表 public Node createLinkTableByTail(Object[] values){ Node head =new Node(values[0],null); Node temp =head; for(int i=1;i<values.length;i++){ Node node =ne原创 2017-06-13 22:48:37 · 292 阅读 · 0 评论 -
java实现二叉排序树的插入节点
1.二叉排序树的结构class BSTNode{ private Integer data=null; private BSTNode lchild=null; private BSTNode rchild=null; public BSTNode() {} public BSTNode(Integer data) { this.data = data; } public I原创 2017-07-17 09:43:01 · 2018 阅读 · 0 评论 -
java实现红黑树的插入节点
1.什么是红黑树红黑树是带有着色性质的二叉查找树。性质如下:① 每一个节点或者着成红色或者着成黑色。② 根节点为黑色。③ 每个叶子节点为黑色。④ 如果一个节点是红色的,那么它的子节点必须是黑色的。⑤ 从一个节点到一个NULL指针的每一条路径必须包含相同数目的黑色节点。推论: 有n个节点的红黑树的高度最多是2log(N+1) 。原创 2017-08-05 23:21:46 · 929 阅读 · 0 评论 -
java实现二叉排序树
1.什么是二叉排序树二叉排序树是二叉树的基础上多出来一些性质而已。性质:若它的左子树不空,则左子树上的所有关键字的值都小于根关键字的值。若它的右子树不空,则右子树上的所有关键字的值都大于根关键字的值。左右子树又各是一棵二叉排序树。基于二叉排序树的性质我们可以得到的一点是,如果我们输出二叉排序树的中序遍历序列,则这个序列的值是依次递增的顺序。如果对二叉树不清楚,那么可以看原创 2017-05-28 12:49:15 · 1103 阅读 · 1 评论 -
java实现选择排序算法
1.选择排序的思想主要思想就是不断地从数组中找到最小或最大的元素,然后开始和排序的位置对应的元素交换即可,直到全部都已经落位。简述:首先找到数组中最小的那个元素,然后将它和数组的第一个元素交换位置(如果这个元素其实就是自己本身的话,那么就和自己本身进行交换)。然后在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此进行下去,直到将整个数组都排序,就是选择排序的过程了。2.选择原创 2016-11-07 09:47:26 · 968 阅读 · 0 评论 -
java实现归并排序算法
1.归并排序算法的思想归并排序主要是使用了递归排序的算法。采用分治思想的策略。要将一个数组排序,先递归地将它分成两半分别排序,然后将结果归并起来。由于需要将两个数组归并到第三个新的数组中去。所以应当创建一个适当大小的数组,然后将两个输入数组中的元素一个个从小到大放入这个数组中。所以总的来看就是将大排序分成多个子部分进行排序,然后再归并到一起。2.归并排序算法的特点对于长度为N的任意数组原创 2016-11-08 10:43:43 · 455 阅读 · 0 评论 -
java实现快速排序算法
1.快速排序算法的思想快速排序是应用很广泛的排序算法。主要原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速排序主要思想就是当两个子数组都有序时整个数组也就自然有序了。而这个过程就是先选出一个基准数,一般都选第一个,然后基准数的左边都是小于基准数的,基准数的右边都是大于基准数的。然后以基准数为基准,切分出两个数组arr1和arr2。arr1中的数一定小于ar原创 2016-11-08 15:11:48 · 403 阅读 · 0 评论 -
java实现求1到n之间的质数
1.特点:质数的特点就是只能被1和其本身整除。2.实现:public class PrimeNumber { public static int[] getPrimeNumber(int n){ int[] retArr=new int[n]; //isPrime作为当前这个数是否为质数的标记位 boolean isPrime; for(int i=1;i<n原创 2016-10-08 16:09:28 · 4581 阅读 · 0 评论 -
有向图的最短路径算法
最短路径算法属于数据结构的图的应用知识。先介绍基本的图的概念。图由顶点集和边集组成。(一张图里不就是有顶点和边)。图中边带有方向就是有向图,否则就是无向图。图的存储结构分为邻接表和邻接矩阵。(邻接表主要采用顺序存储和链式存储结合的方式)。采用链接表这种都是对于稀疏图而言的(就是边少对应也就权值少的这种图叫稀疏图),而我采用的是邻接矩阵,因为我的那个图是个稠密图,边的权值很多。采用邻接矩阵存储就原创 2016-07-27 22:52:47 · 11659 阅读 · 0 评论 -
java实现非递归版二分查找算法
1.介绍二分查找算法就是从中间位置开始比较,然后就是分为小于中值区域Z1和大于中值的区域Z2,然后判断中值和查找的数,比中值小在Z1,大于中值在Z2,采用不断缩小搜索范围,然后确定。2.实现public class BinarySearch { public static int search(int key,int[] arr){ int start=0; in原创 2016-09-18 23:26:07 · 2517 阅读 · 0 评论 -
java实现递归版二分查找算法
递归的特点?1.玩递归主要就是去尝试解决一下规模更小的问题,采用递归将问题收敛到最简单的情况解决。2.由1可知,递归肯定是有一个最简单的情况。3.递归调用的父问题和准备解决的子问题之间不应该有交集。递归实现二分查找:public class BinarySearch2 { public static int rank(int key,int[] arr,int star原创 2016-09-20 23:21:58 · 6840 阅读 · 0 评论 -
java实现子串在原串出现的次数
1.思路:子串在原串中出现的次数肯定需要遍历原串,然后子串是由前脚标和后脚标两部分截取而成的,所以思路就是两次遍历,找到前后脚标,再与指定子串进行比较判断。2.实现:public class Test{ public static int subStrCount(String str,String subStr){ int count=0; for(int i=0;i<s原创 2016-10-10 16:48:14 · 1550 阅读 · 0 评论 -
java实现双栈计算整数表达式
1.栈的规则栈的规则就是使用后进先出的方式。元素的处理顺序和它们被压入栈的顺序正好相反。(java给我们提供了stack类,就可以直接使用Stack类来执行往栈内压入元素,从栈内弹出元素等操作)。2.整数表达式求值的思想分析:表达式里面有两种元素,一种是符号元素,一种是数字元素。而优先级则是 "()" > " *和/ " > " +和- " 。所以我们每次操作需要一个运算符原创 2016-10-20 17:19:27 · 2362 阅读 · 0 评论 -
java实现二叉树
1.二叉树的主要性质性质1:非空二叉树上叶子节点数等于双分支节点数加1。(使用总分支数=总节点数-1证明)性质2:二叉树的第i层上最多有2^(i-1)个节点(i>=1)。性质3:高度为k的二叉树最多有2^(i-1)个节点。性质4:高度为k的二叉树最多有2^k-1个节点。2.二叉树的存储结构(1)顺序存储结构:就是采用数组来存储一个二叉树。(2)链式存储结构:就是采用链表原创 2017-05-25 15:21:48 · 773 阅读 · 0 评论 -
java实现插入排序算法
1.插入排序算法的思想主要思想就是从第二个元素开始,依次和前面的元素比较,如果比前面的元素小则将元素依次向后移位,给需要插入的元素腾出空间。与选择排序类似的是当前索引左边的所有元素都是有序的,但是它们最终的位置不确定,因为后面可能还会出现更小或更大的元素。所以为了给更小或更大的元素腾出空间,它们随时都可能被移动。如果到达了数组的右端时,数组顺序就完成了。算法导论例子:排序方式像我们打牌时排序手中的...原创 2016-11-07 11:44:54 · 733 阅读 · 0 评论