
排序算法Java实现
文章平均质量分 81
多种排序算法的Java实现
kimy
近5年的Java架构开发经验。喜欢专研技术,熟悉Python,PHP,Perl语言。希望能够为社区贡献一份力。
展开
-
拓扑排序(Topologicalsort)之Java实现
拓扑排序算法介绍拓扑排序解决的是一系列相互依赖的事件的排序问题,比如Ant中有很多的Task,而某些Task依赖于另外的Task,编译之前需要清理空间,打包之前要先编译,但其它一些Task处理顺序可以调换(是无所谓前后,不是并行), 如何安排Task的执行顺序就可以用拓扑排序解决。熟悉Java的朋友应该都知道Spring,一个非常优秀的解决组件(Bean)依赖的框架,组件之间可能有依赖关系,也原创 2013-12-09 11:45:17 · 19978 阅读 · 1 评论 -
计数排序(Countsort)之Java实现
计数排序算法介绍比较排序算法可以通过决策树模型证明,其下线是O(nlgn)。而本文介绍的是时间效率为O(n)的计数排序。所谓排序算法,无非就是把正确的元素放到正确的位置,计数排序就是计算相同key的元素各有多少个,然后根据出现的次数累加而获得最终的位置信息。但是计数排序有两个限制条件,那就是存在一个正整数K,使得数组里面的所有元素的key值都不大于N,且key值都是非负整数。计数排序算法J原创 2013-12-06 21:39:09 · 9878 阅读 · 1 评论 -
堆排序(Heapsort)之Java实现
堆排序算法介绍堆是一种重要的数据结构,为一棵完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1), 如果它有左子树,那么左子树的位置是2i+1,如果有右子树,右子树的位置是2i+2,如果有父节点,父节点的位置是(n-1)/2取整。分为最大堆和最小堆,最大堆的任意子树根节点不小于任意子结点,最小堆的根节点不大于任意子结点。所谓堆排序就是利用堆这原创 2013-12-05 22:25:31 · 65249 阅读 · 26 评论 -
快速排序(Quicktsort)之Java实现
快速排序算法介绍快速排序和归并排序都使用分治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)操作,而快速排序拆分子数组的时候显得更有艺术,取一个基准元素,拆分之后基准元素左边的元素都比基准元素小,右边的元素都不小于基准元素,这样只需要分别对两个子数组排序即可,不再像归并排序一样需要归并操作。基准元素的选取对算法的效率影响很大,最好的情况是两原创 2013-12-05 13:14:31 · 46142 阅读 · 3 评论 -
归并排序(Mergesort)之Java实现
归并排序算法介绍归并排序是一个分治算法(Divide and Conquer)的一个典型实例,把一个数组分为两个大小相近(最多差一个)的子数组,分别把子数组都排好序之后通过归并(Merge)手法合成一个大的排好序的数组,归并的过程依然用扑克来解释,想象一下桌子上有两堆排好序(从小到大)的牌,每一次从两堆里面各抽取一张,比较一下两张的大小,如果两张一样大,都取出放到目标数组,否则取出较小的放到目原创 2013-12-04 22:19:34 · 17195 阅读 · 2 评论 -
选择排序(Selectsort)之Java实现
选择排序算法介绍选择排序与冒泡排序非常的相似,都是一层层筑顶的过程,不同点在于冒泡排序会频繁的互换位置,而选择排序只是记录最大元素的位置,并与顶互换,只需交换一次。所以选择排序与冒泡排序相比时间常数会更小,更有效率,尽管他们的最坏运行时间都是O(n2)。选择排序算法Java实现如《插入排序(Insertsort)之Java实现》一样,先实现一个数组工具类。代码如下:public c原创 2013-12-04 21:18:37 · 5845 阅读 · 0 评论 -
冒泡排序(Bubblesort)之Java实现
冒泡排序算法介绍冒泡排序比插入排序更简单,把最大的元素逐步推到最高位(当前须处理子数组的最高位)。依我的理解,冒泡排序是一个一层层筑顶的过程。顶筑好了,排序也就好了。冒泡排序的最坏运行时间是O(n2),效率和插入排序一样。冒泡排序算法Java实现如《插入排序(Insertsort)之Java实现》一样,先实现一个数组工具类。代码如下:public class ArrayUtils原创 2013-12-04 17:54:37 · 8167 阅读 · 0 评论 -
插入排序(Insertsort)之Java实现
插入排序算法介绍排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。插入排序算法Java实现Java里面有很多数据类型,我原创 2013-12-04 17:07:17 · 31927 阅读 · 4 评论