- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
新《计算机算法计与分析》课程设计
用分治法解决快速排序问题及用回溯法解决0-1背包问题
课程设计目的:
《计算机算法设计与分析》这门课程是一门实践性非常强的课程,要求我们能够将所学的算法应用到实际中,灵活解决实际问题。通过这次课程设计,能够培养我们独立思考、综合分析与动手的能力,并能加深对课堂所学理论和概念的理解,可以训练我们算法设计的思维和培养算法的分析能力。
二、课程设计内容:
1、分治法:
(2)快速排序;
、回溯法:
(2)图的着色。
,按以下三个步骤进行排序:
(1)、分解(divide) 以元素为基准元素将划分为三段,和,使得中任何一个元素都小于,而中任何一个元素大于等于,下标在划分过程中确定。
(2)、递归求解(conquer) 通过递归调用快速排序算法分别对和进行排序。
(3)、合并(merge) 由于和的排序都是在原位置进行的,所以不必进行任何合并操作就已经排好序了。
算法实现题: 现将数列{12 21 31 45 36 76 66 46 30 7 89 20 2 5 99 47 23 54 51 73}进行快速排序。
源程序如下:
#include iostream
using namespace std;
#define size 20
int partition(int data[],int p,int r)
{
int n=data[p],i=p+1,j=r,temp;
//将n的元素交换到左边区域
//将n的元素交换到右边区域
while(true)
{
while(data[i]n) ++i;
while(data[j]n) --j;
if(i=j)
break;
temp=data[i]; data[i]=data[j]; data[j]=temp;
}
data[p]=data[j];
data[j]=n;
return j;
}
void quick_sort(int data[],int p,int r)
{ if(p=r)
return;
int q=partition(data,p,r);
quick_sort(data,p,q-1); //对左半段排序
quick_sort(data,q+1,r); //对右半段排序
}
int main()
{
int i,n,data[size];
printf(请输入要排列的数目(=20):);
scanf(%d,n);
printf(请输入要排列的数列:\n);
for(i=0;in;++i)
scanf(%d,data[i]);
quick_sort(data,0,n-1);
printf(排列后的数列为:\n);
for(i=0;in;++i)
printf( %d ,data[i]);
printf(\n);
return 0;
}
运行结果如下:
图1
图5
回溯法—0-1背包问题
回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。?二、算法框架:?1、问题的解空间:应用回溯法解问题时,首先应明确定义问题的解空间。问题的解空间应到少包含问题的一个(最优)解。?2、回溯法的基本思想:确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处
您可能关注的文档
最近下载
- 标准教程HSK3第四课教案.pdf VIP
- 小儿外痔病因介绍.pptx VIP
- 2025年广东恒健投资控股有限公司人员招聘笔试备考试题及答案解析.docx VIP
- 标准教程HSK3第十六课教案.pdf VIP
- 高科技农业实践PPT.pptx VIP
- 2025至2030中国塔格糖行业发展趋势分析与未来投资战略咨询研究报告.docx
- 论道光帝庙讳与古书中‘宁’字的写法-国立中山大学中国文学系.pdf VIP
- 生产与运作管理-国家开放大学电大易考通考试题目答案.pdf VIP
- 耳石症的治疗与康复.pptx VIP
- 通线[2008]2201-2 时速200~250公里客运专线铁路(兼顾货运) CRTS-Ⅰ型板式无砟轨道 第二册 轨道板及过渡段轨枕.pdf VIP
原创力文档


文档评论(0)