算法导论
Heaven13483
这个作者很懒,什么都没留下…
展开
-
《算法导论》 6.5优先级队列
接上一篇,堆排序的实现/*返回堆最大值。函数系统中sample是己进行了正确的堆排序的堆实例。。因为已经进行了堆排序,所以序列中最大的元素在堆的第一个元素中。*/int HEAP_MAXIMUM(Dui &sample){return sample.A[0];};/*去掉并返回堆中最大元素。即删除并返回堆中的第一个元素,将堆的最后元素放到原创 2012-06-26 17:30:30 · 711 阅读 · 0 评论 -
《算法导论》 算法导论2.2.1插入排序
2.1 插入排序。我们分析的第一个算法是插入排序算法,输入:n个数(a1,a2,a3,a4,a5,a6,a7…..an)输出:序列的一个排列(即重新排序)(a1’,a2¬’,a3’)使a1’插入排序算法的伪代码是以一个过程的形式给出的,称为INSERTION-SORT,,它的参数是一个数组。包括了n个待排序的数。伪代码INSERTION-SORT为for j = 2,to原创 2012-06-25 11:14:41 · 598 阅读 · 0 评论 -
《算法导论》 6.2 d叉堆的分析
二叉堆操作d叉堆有与二叉堆很类似,但(一个可能的例外是)其中的每个非叶结点有d个子女,而不是2个。 a)如何在一个数组中表示一个d叉堆? b)含n个元素的的叉堆的高度是多少? c)给出d叉最大堆的EXTRACT-MAX的一个有效实现,并用d和n表示出它的运行时间。 d)给出d叉堆的INSERT的一个有效实现,并用d和n表示出它的运行时间。原创 2012-07-01 09:54:02 · 1817 阅读 · 0 评论 -
《算法导论》 7-3 Stooge排序
Howard、Fine等教授提出了下面的“漂亮的”排序算法: 牛B 啊。。不愧是教授啊。。这么简单的算法代码。。int Stooge_sort(int a[],int s,int t){ int k; if (a[s]>a[t]) swap(a[s],a[t],k); if (s+1>=t) return 0; k=(原创 2012-07-03 11:07:53 · 764 阅读 · 0 评论 -
《算法导论》 2.3.1分治法
分治法有很多算法在结构上是递归的:为了解决一个给定的问题,算法要一次或多次地递归地调用其自身来解决相关的问题。这些算法通常采用分治策略:将原问题划分为n个规模较小而结构与原问题相似的子总是;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。分治模式在每一层递归上都有三个步骤:分解(Divide):将原问题分解成一系列子总是解决(Conquer):递归地解各子问题,若子问题足原创 2012-06-25 11:19:01 · 1130 阅读 · 0 评论 -
《算法导论》 第6章堆排序
#include#includeusing namespace std;定义结构体,其中包含数组长ALength,堆长heap_size。struct Dui{int *A;int heap_size;int ALength;Dui(){heap_size = 0;ALength = 0;}};//返回堆中元素i的父结原创 2012-06-25 17:51:37 · 1202 阅读 · 0 评论 -
《算法导论》 第7章 快速排序
1. 快速排序的描述像合并排序一样,快速排序也是基于分治模式的。下面是对一个典型子数组A[p..r]排序的分治过程的三个步骤:分解:数组A[p..r]被划分成两个(可能空)子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的每个元素都小于等于A[q],而且,小于等于A[q+1..r]中的元素。下标q也在这个划分过程中进行计算。解决: 通过递归调硫,对子数组A[p原创 2012-07-02 16:47:24 · 808 阅读 · 0 评论 -
《算法导论》 8.2 计算排序
计数排序的基本思想就是对每一个输入元素x,确定出小于x的元素个数。有了这一信息,就可以把x直接放到它在最终输出数组中的位置上。例如,如果有17个元素小于x,则x就属于第18个输出位置。当有几个元素相同时,这个方案要略做修改,因为不能把它们放在同一输出位置上。在计数排序算法的代码中,我们假定输入是个数组A[1..n],length[A]=;n 。另外还需要两个数组:存放排序结果的B[1..n],原创 2012-07-04 16:26:46 · 931 阅读 · 0 评论 -
《算法导论》 8.4 桶排序
桶排序的思想就是把区间[0, 1)划分成n个相同大小的子区间,每一个区间称为桶(bucket)。然后,将n个输入数据分布到各个桶中去。因为输入数均匀且独立均匀分布在[0, 1)上,所以一般不会有很多数落在一个桶中的情况。为得到结果,先对各个桶中的数进行排序,然后按次序把各个桶中的元素列出来即可。 在桶排序算法中,假设输入的是一个含n个元素的数组A,且每个元素满足0≤A[i]原创 2012-07-04 23:16:29 · 3593 阅读 · 1 评论