算法
white diamond
swu学生
展开
-
堆排序原理及其实现
构建堆排序,把新加入的那个数放在堆末尾,然后比较父节点,直到比较的头或者,小于父节点为止移除,调整堆。移除根节点,把尾节点换头结点。然后根据构建堆一样不停的比较,交换父节点。堆排序一个完全二叉树,可以用数组实现,节点为i ,左子节点为2i,右子节点为2i+1,堆排序是用数组实现的,因为数组是一个完全二叉树,所以可以根据一些特性来找到儿子节点。我们所谓的优先队列的原理其实也就是用堆实...原创 2018-12-26 15:21:20 · 548 阅读 · 1 评论 -
二叉搜索树实现
二叉搜索树的实现是用树的结果来实现的搜索二叉树的构成原理:递归找到要插入的位置,然后创建节点返回的时候把节点连接起来,二叉搜索树就是左边的都比跟节点小,右边的都比根节点大,和折半查找差不多首先介绍二叉搜索的insert操作,就是构成二叉搜索树 public Node _insert(Node node,int key,int value) { if(node ==null...原创 2018-12-29 08:06:12 · 236 阅读 · 0 评论 -
并查集原理及其实现
并查集,听起来可能有点陌生的数据结构,他和树的思想类似,但是肯定也有所不同。今天我们就来简单介绍一下并查集的思想,和一步一步的优化。首先简单的并查集是用数组实现的,如果要存储一些比较特殊的数据可以用类或者结构体来实现。简单介绍,int 数组的实现,数组的下标表示这个数组的数,下标对应的数表示,这个数的父亲。并查集的基本方法就是查找最顶层父节点,和两个数是否连接就是查找两个数的顶...原创 2018-12-24 14:33:27 · 388 阅读 · 0 评论 -
插入排序
插入排序O(N2)插入排序是,重当前的数往前看,前面的数是一个有序对,然后如果当前这个数比前面的小,就把前面的进行,赋值交换,直到这个数比当前这个数小,就把现在这个数和当前基准的这个数进行交换。希尔排序:找一个基准,根据这个基准来进行交换排序,然后递减这个基准代码如下 //arr代表数组,l,r,代表排序的位置。 //l,r 左闭右闭 就是把arr[l....r] ...原创 2018-12-24 14:37:39 · 87 阅读 · 0 评论 -
归并排序原理及其实现
自定向下左闭右闭左边递归,右边递归再根据左边,右边(进行合并排序)代码如下这里面相比传统的归并有一个优化那就是当数组分到一定数量的时候,就可以进行插入排序,来提高效率,还有就是当左边本来就小于等于右边的时候就不需要就行归并啦 //归并排序自定向下 public static void mergeSort(int[] arr,int n){ __mer...原创 2018-12-24 14:45:54 · 398 阅读 · 0 评论 -
快速排序改进原理及其实现
快速排序是现在计算机中排序算法相对比较快的一种算法,在各类语言中的排序算法大都是快速排序算法现在我们来讲解一下快速排序的原理及其实现:快速排序最主要的思想就是,找到一个基准点,然后把大于这个基准点的数放在后面,小于基准点的数放在前面然后根据这个基准点的位置进行递归分别处理前面后后面的数组完成整个递归的过程。大体思路就是这样。简单明了上代码 //快速排序 //改变基准可以改变快...原创 2018-12-25 11:02:57 · 210 阅读 · 0 评论