
各类排序算法
文章平均质量分 72
享受Programming
这个作者很懒,什么都没留下…
展开
-
排序算法——希尔排序
写个希尔排序算法的程序写了一个半小时,也是醉了,看样子对代码的 熟悉程度确实是还很差很差啊,废话不说了,总结如下:希尔排序,感觉就是优化了的插入排序,先对待排序的数组进行分组,再排序。然后再组合起来,减小分组的间隙,再排序,再组合。其实我也不是很清楚,具体如何优于插入排序法,这个需要再认真发分析一下时间复杂度。在学完所有排序方法后进行总结。先把实现的思想和代码贴上来,代码有较详细的注释,图片来原创 2015-06-17 19:17:21 · 546 阅读 · 0 评论 -
内排序与外排序+内排时间复杂度等性能总结
【出处】学了这么久,今天才知道内排和外排,总结一下http://book.51cto.com/art/201108/287033.htm内排序与外排序根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多转载 2015-08-25 10:31:02 · 4822 阅读 · 0 评论 -
排序算法——堆排序
都说堆排序是时间复杂度最小的排序算法,讲了各种堆排序的好,我这里就不赘述了,今天花了一个下午和半个晚上的时间算是差不多研究明白了堆排序。其实堆排序的逻辑并不是特别复杂,如果理解了就会觉得没有那么难,但是写代码的实现的时候,还是需要考虑很多事情的。反正我是被绕晕过的~首先,写一下我对堆排序思想的认识。堆排序主要分为以下两个步骤:1、由待排序的数组,构建一个最大堆(或者最小堆)。最大堆的意思就原创 2015-06-18 20:32:16 · 423 阅读 · 0 评论 -
【继续思考】排序算法——基数排序与桶排序
基数排序可以用于较大数的排序,克服了计数排序的这一缺点。基数排序思想并不复杂,通常我们排序有两种思路,从高位到低位,或者,从低位到高位。比如比较年月日,我们通常会先比较年份,年份相等时,再比较月份,月份相等时,再比较日期。下面这段话,我觉得写得很简单通俗,帮助了我理解(来源http://blog.youkuaiyun.com/hazir/article/details/6396194)“计数排序的原创 2015-07-01 22:48:16 · 483 阅读 · 0 评论 -
排序算法——插入排序
本人小菜鸟一枚,最近今天准备努力研究一下各种排序算法,并直接写代码实现它,不足之处,欢迎指教,谢谢~1、插入排序很简单直接的理解方法,就是像打扑克牌一样,摸牌的时候,手里的牌通常是从小到大排列好的,右手摸起来的牌会从右到左(也可以从左到右)依次比较,然后插入其中。用计算机的思维来理解,我觉得可以分为以下几个步骤首先,对现有的数组,从左到右,依次选取一个key,做为比较插入的原创 2015-07-02 08:58:20 · 484 阅读 · 0 评论 -
排序算法——计数排序
之前看的都是比较排序算法,通过两个数大小的比较来进行比较。计数排序是一种线性排序算法,不用进行比较。基本思想是对于每个元素x,找出比x小的数的个数,从而确定x在排好序的数组中的位置。算法导论第三版109页,讲解非常清楚。这里把其中的一个图贴上来,便于理解图中,数组A是待排序的数组,C是用来临时存放信息的数组,B是最终排好序的数组。对于A中的每一个元素,我们将其元素作为C数组的下原创 2015-07-01 21:43:05 · 4058 阅读 · 1 评论 -
【再思考】排序算法——归并排序
好久没有看排序算法了,一直拖着,今天花了一个晚上理解了一下,只能说七八分理解吧,脑子里还是有些浆糊的。先记录一下,以免忘记:归并算法,归根结底是一种分治策略,需要用到递归。下面一张图(图是从别人博客来的,忘记出处了,抱歉),很好说清楚由图可知,如果想排序一个数组a[63,95,84,46,46,63,84,95],假设现在已经将前半部分和后半部分都排好了,即有a1[46,63,84原创 2015-06-30 22:24:11 · 407 阅读 · 0 评论 -
排序算法——冒泡排序
冒泡排序算法的思想很简单,最基本的思想就是,比较相邻的两个数,然后依次将最大(或者最小的)往同一个方向移动。看到一个大牛写得很好了,我就不多说了,转载过来了 冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一转载 2015-06-24 20:40:50 · 272 阅读 · 0 评论 -
排序算法——选择排序
简单选择排序算法的思想很简单,在待排序的数组中,选择最大(或者最小的)与第一个元素进行交换,然后在剩下的元素中选择次大的(次小的)与第二个元素进行交换,以此类推,直到最后两个元素比较完成。感觉思想很简单很简单,是我认为所以排序算法里,最好理解的算法,但是就这个程序,居然写了一个小时没写出来,我真的是服了自己,可能是自己现在脑子有点晕,也有可能是真的就是因为自己太菜了,总之,上代码了,真的是要多动手原创 2015-06-17 20:59:42 · 385 阅读 · 0 评论 -
【待思考】排序算法——快速排序
快速排序思想有点乱啊,思路基本上是理清楚了,但是写代码还是把我绕晕了两小时,明天再来继续理清……代码只能实现部分数组的排序,对于一些特殊数组,如1,1,5,1,1,1,4,1,1,546就乱掉了【参考链接】写得非常好的,对快速排序的解释,简单易懂http://blog.youkuaiyun.com/morewindows/article/details/6684558using namespace s原创 2015-06-24 22:51:50 · 277 阅读 · 0 评论