java算法
文章平均质量分 56
HelloWorld_EE
这个作者很懒,什么都没留下…
展开
-
Selection sort的java语言实现
选择排序(Selection Sort)的实现思想如下: First,find the smallest element in the array,and exchange it with the element in the first position Then ,find the second smallest element in the array.and exchange原创 2015-05-31 12:23:41 · 1033 阅读 · 0 评论 -
BinarySearch的java语言实现
二叉树搜索思想如下:一般情况下我们只对在已排序好的数组中进行查找,若没有进行排序,我们必须首先对其进行排序,否则算法将是无效的; 已知数组arr[l..r],和姚查找的数x 第一步:取得数组的中间元素,并与x进行比较; 第二步:若相等,则返回middle; 第三步:若arr[middle]>x,则在数组的middle的右边进行查找;否则在数组的middle的左边进行查找。原创 2015-05-31 20:29:15 · 2079 阅读 · 1 评论 -
Interpolation Search与BinarySearch的比较
InterpolationSearch的实现以及与BinarySearch的比较原创 2015-06-02 21:48:21 · 1483 阅读 · 3 评论 -
不相交集合的数据结构
不相交集合的数据结构本来想着来实现基于贪婪思想的Kruskal算法—–最小生成树的算法之一。 却发现当我们合并集合时里面还涉及到一个判断“环”的问题,继而有了本篇博文:不相交集合的数据结构。原创 2015-06-06 00:15:09 · 1738 阅读 · 0 评论 -
快排的最坏情况
快排的最坏情况可能我们每个人都会思考这个问题 快排的最坏情况是在什么时候发生呢?? 我们应该怎么避免其不会发生呢? 快排的运行时间依赖于划分是否平衡,而平衡与否又依赖于用户划分的主元素。 如果划分是平衡的,那么快速排序算法性能与归并排序一样。 如果划分时不平衡的,那么快速排序的性能就接近于插入排序了原创 2015-06-04 09:44:27 · 27082 阅读 · 4 评论 -
贪婪算法
贪婪算法用一句话来说这个算法 站在此时此刻使得我们做出的选择是最好的,即局部最优的。 这样每步的局部最优虽然并不能保证我们的总体是最优的,但是对于很多中情况,发现贪婪算法的这种局部最优导致的就是最优解,例如:我们熟悉的工作的调度问题。以及Kruskal算法和Prim算法等都是基于贪婪算法。原创 2015-06-04 11:13:51 · 1157 阅读 · 2 评论 -
HeapSort的java语言实现
堆排序的实现思想如下 第一步:建堆(最大堆或最小堆) 第二步:排序 要注意的是:建堆和排序的过程中都会进行堆的维护,以最大堆为例:节点的值不小于左右两个子节点(若存在)的值,也不大于父节点的值;若不满足这样的情况,则需要调整原创 2015-06-01 16:22:59 · 1073 阅读 · 1 评论 -
BucketSort的java实现
桶排序思想 将所要排序的序列分别映射到N个桶中 然后对每个桶中的元素进行插入排序 最后再将所有桶中的元素连接在一起即可 注意:当我们采用桶排序的前提是:所要排序的序列要满足在某一范围内时均匀分布的,这样才能保证每个桶的元素的个数不会差异太大原创 2015-06-02 20:33:26 · 2174 阅读 · 1 评论 -
寻找最小生成树的kruskal算法的java实现
寻找最小生成树kruskal算法的java实现最近几周忙着考试,这几天放假,于是,继上次关于最小生成树的实现拖到了今天。最小生成树的实现关于环的检测可以看这里;最小生成树kruskal的思想如下: 1)将图中所有边按权重从小到大排序,假设放在集合G当中,结合S放即将构成最小生成树所选的边,刚开始时,结合S为空集 2)逐渐选取权重最小的边,若此边与已经已经选中的边没有构成环,则放进S集合原创 2015-06-21 22:36:11 · 2267 阅读 · 0 评论 -
快排(QuickSort)的java语言的实现
快速排序快排的思想与前面所介绍的归并排序的思想类似,也是采用了分治法 算法思想如下: 第一步:分解,数组arr[l..r]别分为两个子数组arr[l..q-1]和arr[q+1..r],使得前面一个数组的元素小于等于arr[q],后面一个子数组的元素全部大于arr[q]; 第二步:解决,通过递归调用快速排序,对两个子数组进行排序 第三步:合并,因为子数组都是原址排序的,所以不需要原创 2015-05-31 19:17:32 · 2837 阅读 · 1 评论 -
InsertSort
插入排序的java语言实现前段时间一直在学习算法,在看《算法导论》这本书,从今天开始就要开始我们的算法实现之旅了,希望能给自己和他人一点帮助原创 2015-05-30 19:31:19 · 941 阅读 · 0 评论 -
Merge Sort的java语言实现
归并排序的实现思想:采用的分治法(Divide and Conquer)来实现 第一步,将数组分成两半 第二步:将这两半分别排序 第三步:将排好序的两个子数组归并成一个原创 2015-05-31 15:49:23 · 1831 阅读 · 0 评论 -
堆排序的Java实现
堆排序的Java实现由于这里是堆排序,因此还是说明下堆排序的原理:一般堆是用数组来进行模拟的,arr[k]的子节点为arr[k * 2+1]和 arr[k * 2+2] .堆排序就是解决以下两个问题:1、如何将n个待排序的数组建成堆?2、输出堆顶元素之后,怎么样调整剩余的n-1个元素使其变为一个新堆进行进行这一步。以最小堆为例至于第一个问题:就是将二叉堆的非叶子节点(对应的数组的arr[(len/2原创 2016-08-29 21:42:28 · 807 阅读 · 0 评论