排序算法(sorting algorithms)
文章平均质量分 82
beiyetengqing
http://blog.csdn.net/beiyeqingteng 的镜像站
展开
-
归并排序(Merge sort)算法
Merge sort 算法的思想就是把数组分成更小的数组,合并的时候再排序。由于是二分,所以总的时间为 T(n) = 2 T(n/2) + \theta (n) = O(n * lgn)。public void mergeSort(int[] array, int start, int end) { if (start < end) { int mid = start + (end原创 2012-10-04 12:03:15 · 723 阅读 · 0 评论 -
堆排序(Heap Sort)算法的实现
堆排序算法思想非常简单,先把一个数组看成一个heap, 在下面的实现中,我使用的是max heap, 也就是说根总是比叶子大。所以我们第一步就是建立max heap。建立完毕以后,很明显这个heap的root就是最大的,把最大的根放在数组的最后一个位置,把数组长度缩小一个位置,这样最大的那个数就不会再参与到下次的排序当中,这时,除了根以外,heap的其它部分都保持max heap的特性,所以我们需原创 2012-10-04 12:06:47 · 1124 阅读 · 1 评论 -
Quick Sort (快速排序)
Quick sort algorithm is quite like the merge sort, cause both of them use the idea of divide-and-conquer, but be aware, quick sort doesn't conquer it subproblems, cause when the problem is divided int原创 2012-10-04 20:42:51 · 812 阅读 · 0 评论 -
一亿数据获取前100个最大值(基于最小堆和Quicksort)
前言:在CSDN上看到一个网友利用最小堆实现 “ 获取一亿数据获取前100个最大值” 。原帖请看:http://blog.csdn.net/yjflinchong/article/details/7533972。 然后自己利用quicksort的原理也写了一个程序来解决那个问题。通过测试,基于quicksort原理的方法平均运行时间是1.264秒,基于最小堆方法的平均运行时间是0.原创 2012-09-24 10:23:12 · 2310 阅读 · 1 评论 -
Counting sort
The running time of counting sort is O(n), and usually, the running time of sorting algorithms will be either O(n^2) or O(n lgn), the reason why counting sort is O(n) is that it doesn't have the comp原创 2013-03-27 07:12:04 · 695 阅读 · 0 评论