
sort algorithm
文章平均质量分 70
dreamhougf
走的远远的,直到看不见...........
展开
-
无聊写排序之 ----部分排序(Partial Sort)
当有一个无序的序列集合的时候,我们想知道这个序列里面按照某种排序关系最大的m个或者前top个有序的元素。比如我又100个学生,我只想知道排名前20的学生的名次列表,剩余的我并不关心,如何去得到呢? 当然你脑海中第一个闪过的便是sort,做一次排序,取排序后前面的20不就好了吗? 没错,排序作为做常规的方法,肯定是最先想到的,这里要介绍的是比排序来的更快更直接的一个算法:部分排序(partial_s原创 2015-07-28 16:43:06 · 6832 阅读 · 0 评论 -
无聊写排序之 ----第K最值(nth_element)
之前partial_sort有讲述了如果从一个无序序列中快速获得top m的所有有序数列m个。我们也常常会遇到这样的问题:如何在一个乱序的序列集合中,找到第K大的或者排名第K的那个元素?或者找到前K个排名的元素,但是这K个数之间的顺序对我们来说并不重要。比如篮球比赛中总胜利场数最多的20支球队进入总决赛,而这20支球队之前各自胜利多少的排名并不重要,因为决赛要重新比。 这个问题我们同样可以用排原创 2015-07-28 17:51:12 · 976 阅读 · 1 评论 -
无聊写排序之 ---- 归并排序(MergeSort) 非递归实现
前面讲了归并排序的递归实现,虽然递归实现代码简洁容易理解,但是在实际执行中由于原创 2014-10-29 11:09:40 · 2712 阅读 · 1 评论 -
无聊写排序之 ---- 归并排序(MergeSort) 递归实现
归并排序是采用分治法的思想,将原创 2014-10-28 16:23:33 · 1047 阅读 · 0 评论 -
无聊写排序之 ---- 快速排序(QuickSort) 递归实现
如果排序你忘记了快速排序这个王者至尊,那你的排序原创 2014-10-29 15:54:59 · 896 阅读 · 0 评论 -
无聊写排序之 ---- 选择排序(Select Sort)
前面讲过了冒泡排序, 冒泡排序sh原创 2014-10-22 16:26:19 · 609 阅读 · 0 评论 -
无聊写排序之 ---- 冒泡排序(Bubble Sort)
排序是算法实现原创 2014-10-22 10:18:14 · 873 阅读 · 0 评论 -
无聊写排序之 ----基数排序(RadixSort)
基数排序(RadixSort) 基数排序也是一种不需要元素间的比较进行排序的排序算法,而是通过对数据的分配和合并来实现的排序,也叫做桶子法排序,通过对元素按照键值进行分配到指定标准的桶中,在进行合并收集从而达到排序的结果,是一种稳定排序,基数排序的时间复杂度是O(k·n)其中n是排序元素个数,k是数字位数。注意这不是说这个时间复杂度一定优于O(n·log(n)),k的大小取决于数字位的原创 2015-02-02 17:33:55 · 630 阅读 · 0 评论 -
无聊写排序之 ---- 快速排序(QuickSort) 非递归实现
前面讲了最常规的快速排序算法原创 2014-10-29 17:52:26 · 2220 阅读 · 0 评论 -
无聊写排序之 ---- 计数排序(CountingSort)
前面讲过了几种常见的排序方法,比如冒泡,归并,插入,快排等等,这些排序算法的时间复杂度都限制在O(nlogn)的上界。他们所有的排序结果都依赖于各个元素之间的比较来确定,所以我们把这类算法称之为比较排序。今天我们介绍时间复杂度为O(n)上界的排序算法:计数排序。 计数排序假设N个输入元素的每一个都是确定在一个range里面,比如一个整数序列,其中所有的元素都不大于K,当k=O(n)时,原创 2015-01-30 11:34:31 · 560 阅读 · 0 评论 -
无聊写排序之 ---- 希尔排序(ShellSort)
之前我们讲了插入排序,它的效率在某些时候是很高的,比如,我们的记录本身就是基本有序的,我们只需要少量的插入操作,就可以完成整个记录集的排序工作,此时直接插入很高效。还有就是记录数比较少时,直接插入的优势也比较明显。可问题在于,两个条件本身就过于苛刻,现实中记录少或者基本有序都属于特殊情况。 不过别急,有条件当然是好,条件不存在,我们创造条件,也是可以去做的。于是科学家希尔研究出了原创 2014-10-23 11:12:34 · 492 阅读 · 0 评论 -
无聊写排序之 ---- 插入排序(insert Sort)
插入排序(Insert Sort)基本的操作是:原创 2014-10-22 17:39:56 · 646 阅读 · 0 评论 -
无聊写排序之 ---- 堆排序(HeadSort)
还记得之前说的选择排序么?忘记了看这里选择排序>。 选择排序i时,我们需要从n-i+1个序列中选择一个最小的数字, 那么势必就要比较多次来寻找到最小的那一个元素从而来进行排序,这种排序虽然相对于冒泡排序有效的减少了交换所带来的开销,但是多次比较对于比较的结果却没有进行记录,当排序第1个数字的时候需要从第1.....n中找到最小的数字进行和第1个进行比较交换,当我们需要排序第2个数字时,同样需要将上原创 2014-10-24 14:03:32 · 917 阅读 · 0 评论