Algorithm
文章平均质量分 86
古韦
这个作者很懒,什么都没留下…
展开
-
桶式排序java实现
桶式排序不再是一种基于比较的排序方法,它是一种比较巧妙的排序方式,但这种排序方式需要待排序的序列满足以下两个特征: 待排序列所有的值处于一个可枚举的范围之类; 待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。 排序的具体步骤如下: (1)对于这个可枚举范围构建一个buckets数组,用于记录“落入”每个桶中元素的个数; (2)将(1)中得到的buckets转载 2014-08-01 15:11:03 · 566 阅读 · 0 评论 -
红黑树
教你透彻了解红黑树 作者:July、saturnman 2010年12月29日 本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。 推荐阅读: Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, Fe转载 2014-08-24 16:40:35 · 448 阅读 · 0 评论 -
树、二叉树的java实现
我们接着上一篇数据结构继续讲解。本章系数据结构之树与二叉树,从这章开始,我们就要介绍非线性结构了,这些内容理解起来比线性表稍难一些,我尽量写的通俗一些,如果读的过程中有任何问题,请按上述方式联系我! 一、树 树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。树结构在客观世界中是大量存在的,例如家谱、行政组织机构都可用树形象地表示。转载 2014-08-08 21:30:02 · 676 阅读 · 0 评论 -
线性表、栈和队列、数组和字符串
这部分内容作为计算机专业最基础的知识,几乎被所有企业选中用来作考题,因此,本章我们从本章开始,我们将从基础方面对数据结构进行讲解,内容主要是线性表,包括栈、队列、数组、字符串等,主要讲解基础知识,如概念及简单的实现代码,非线性结构我们在后面的文章中给出。过程中有任 何问题,请联系本人:http://weibo.com/xtfggef 一、数据结构概念 用我的理解,数转载 2014-08-08 21:31:39 · 807 阅读 · 0 评论 -
基数排序java实现
基数排序属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。 基数排序转载 2014-08-01 16:09:48 · 637 阅读 · 0 评论 -
归并排序java实现
归并排序是另一类不同的排序方法,所谓归并,就是把两个或者两个以上的有序表合并成一个新的有序表的过程。 归并排序的基本思想: 将一个含有n个序列的有序表看成是n个长度为1的有序表,然后两两归并,得到[n/2]个长度为2的有序表,然后再两两归并,直到得到一个长度为n的有序表为止。 下面是归并排序的一个简单的例子: 初始值 【49】 【38】 【65】 【9转载 2014-08-01 14:40:00 · 512 阅读 · 0 评论 -
堆排序
堆排序是一种利用完全二叉树来解决问题的高效算法,合法的最大堆树要满足一个条件就是每一个结点值都要大于或等于它的孩子结点值。在一个数组中那专业法表示为: arrays[i]>=arrays[2*i+1] && arrays[i]>=arrays[2*i+2]; 最小堆类似,只要改为冒最小值即可。 堆排序树的构造过程找最大值过程由下图,数组arrays[0....n]为:17,8,45,8转载 2014-07-30 19:11:10 · 418 阅读 · 0 评论 -
希尔排序
插入排序的算法复杂度为O(n2),但如果序列为正序可提高到O(n),而且直接插入排序算法比较简单,希尔排序利用这两点得到了一种改进后的插入排序。 一. 算法描述 希尔排序:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入转载 2014-07-30 18:58:52 · 522 阅读 · 0 评论 -
插入排序、冒泡排序和选择排序详解与Java实现
插入排序算法是一个对少量元素进行排序的有效算法。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。 JAVA实现该算法如下: Java代码 public void insert转载 2014-07-29 19:12:04 · 1205 阅读 · 0 评论 -
java实现快速排序
快速排序对冒泡排序的一种改进,若初始记录序列按关键字有序或基本有序,蜕化为冒泡排序。 基本思想 通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 一趟排序过程如下: 具体代码 public class Quic原创 2014-12-07 15:00:24 · 701 阅读 · 0 评论