算法设计与分析实验源代码及运行结果(完整版)实用资料.doc
上传人:天马****23 上传时间:2024-09-10 格式:DOC 页数:70 大小:4.4MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

算法设计与分析实验源代码及运行结果(完整版)实用资料.doc

算法设计与分析实验源代码及运行结果(完整版)实用资料.doc

预览

免费试读已结束,剩余 60 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

算法设计与分析实验源代码及运行结果(完整版)实用资料(可以直接使用,可编辑完整版实用资料,欢迎下载)1.分治法二分检索源代码:#includeusingnamespacestd;voidSelectSort(int*pData,intCount{intiTemp;intiPos;for(inti=0;i{iTemp=pData[i];iPos=i;for(intj=i+1;j{if(pData[j]{iTemp=pData[j];iPos=j;}}pData[iPos]=pData[i];pData[i]=iTemp;}}voidmain({intiCount;cout<<"请输入要排序的个数:"<cin>>iCount;intData[2000];cout<<"请输入原始数据:"<for(intk=0;k{cout<<"Data["<cin>>Data[k];}cout<<"排序之前的数据顺序为:"<for(intj=0;j{cout<";}cout<cout<<"排序之后的数据顺序为:"<SelectSort(Data,iCount;for(inti=0;i{cout<}cout<}运行结果截图:2.分治法排序源代码:#include#includeusingnamespacestd;intdivide(int*list,intlow,inthigh{intpivotkey=list[low];while(low<high{while(low<high&&list[high]>=pivotkeyhigh--;list[low]=list[high];while(low<high&&list[low]<=pivotkeylow++;list[high]=list[low];}list[low]=pivotkey;returnlow;}//一次划分;voidsort(int*list,intlow,inthigh{if(low<high{intpivotloc=divide(list,low,high;sort(list,low,pivotloc-1;sort(list,pivotloc+1,high;}}//快速排序算法;intmain({intarry[100];inti;cout<<"Thearrytobesortedare:"<for(i=0;i<100;i++{arry[i]=rand(%100;cout<}sort(arry,0,99;cout<for(i=0;i<100;i++{cout<}return0;}运行结果截图:1.货郎担问题源代码:#include#include#include#defineNUM4usingnamespacestd;intnum=(intpow(2,NUM-1;classsubset{public:boolcontains[NUM-1];//除了开始结点外,包含哪个城市就把相应的contains设置为1;boolis_in(inti{i--;if(contains[i]returntrue;elsereturnfalse;}//判断第i个城市是否在子集中,如果在返回true,否则false;};//所有节点城市的子集。voidset_ct(subset*s,intbegin,intend,intprocess{if(NUM-2==process{s[begin].contains[process]=false;s[end].contains[process]=true;}else{intmiddle=(end+begin/2;inti;for(i=begin;i<=middle;i++s[i].contains[process]=false;set_ct(s,begin,middle,process+1;for(i=middle+1;i<=end;i++s[i].contains[process]=true;set_ct(s,middle+1,end,process+1;}}//用递归的方法初始化子集结点;intcombian(inta,intb{if(b>=0&&a>=b{if(0==b||a==breturn1;else{if(a-b<bb=a-b;//组合数的性质;inti,result=1;for(i=a-b+1;i<=a;i++result*=i;for(i=2;i<=b;i++r