2013年5月17日
摘要: 1)基本思想堆排序的基本思想基于优先队列,对于一个无序数组,首先构造出最小堆,然后每一次删除顶点处最小的元素,这样依次删除就可以得到一个降序排列的数组。在此过程中,如将删除的元素依次赋给一个数组,那么最终得到的是一个增序排列的数组,但是需要额外的数组空间。为了减少空间消耗,可以利用堆删除元素之后并重新构造之后的最后一个位置来存放刚刚删除的元素,最终得到的是一个降序数组。为了得到增序排列的数组,可以将最小堆改为最大堆,即顶点处的元素是最大的,称为maxHeap.示例如下,首先删除顶点处元素97,并将最后一个元素移至顶点处,并重新构造最大堆:2)算法实现 1 #include "stda 阅读全文
posted @ 2013-05-17 11:13 Sophia-呵呵小猪 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1)基本思想希尔排序是基于插入排序的,它首先是对一定间隔的元素进行插入排序,然后缩小间隔,再次进行插入排序,直到间隔为1,此时数组已经基本排好序,那么最后一次的插入排序将非常快。这个间隔也叫增量(increment),因而也叫缩小增量排序。如果增量序列为h1,h2,...ht, h1必须为1,最终的排序才算完成。对于增量hk(h1 0; inc/=2) 4 { 5 for(int i = inc; i 0; j -= inc)10 {11 if(A[j-inc] > temp)12 ... 阅读全文
posted @ 2013-05-17 10:14 Sophia-呵呵小猪 阅读(136) 评论(0) 推荐(0) 编辑