摘要: 堆排序是一种利用完全二叉树来解决问题的高效算法,合法的最大堆树要满足一个条件就是每一个结点值都要大于或等于它的孩子结点值。在一个数组中那专业法表示为:arrays[i]>=arrays[2*i+1] && arrays[i]>=arrays[2*i+2]; 最小堆类似,只要改为冒最小值即可。堆排序树的构造过程找最大值过程由下图,数组arrays[0....n]为:17,8,45,84,2,94,刚找到最大值后把最大值即94放在数组的最后面arrays[n],然后进入递归把arrays[0...n-1]再进入下面图这个过程,只是把排好序的最大值不放入到这个过程中,就这 阅读全文
posted @ 2012-09-04 22:11 春天的故事 阅读(13926) 评论(1) 推荐(0) 编辑
摘要: 合并排序算法是用分治策略实现对N个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同 的两个子集合,分别 对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。重点:1.分治的实现2.合并的实现分治,就是把整个集合的元素一直除2化分,一直化为到没有两个元素开始合并。图:分治的时候比较简单,一直除2递归就行了,合并的时候为了方便就借助另一个变化的数组来接收交换的数组,合并的时候,两个指标i、j,把值比较小的放入temp数组中,然后放入那个值的那一边的指标自加,继续比较。一直把值合部排完合并为一个数组,然后把temp数组复制回到原来数组就可以进入下一个递归。完全代码由下 阅读全文
posted @ 2012-09-04 10:58 春天的故事 阅读(8317) 评论(5) 推荐(1) 编辑