网站大量收购独家精品文档,联系QQ:2885784924

计算机算法设计与分析期末考试复习资料.doc

计算机算法设计与分析期末考试复习资料.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机算法设计与分析期末考试复习资料

一、算法设计实例 快速排序(分治法) int partition(float a[], int p, int r) { int i= p, j=r+1; float x = a[p]; while(1) { while(a[++i] x); while(a[--j] x); if(i = j) break; swap (a[i], a[j]); } a[p] = a[j]; a[j] = x; return j; } void Quicksort(float a[], int p, int r) { //快速排序 if(p r) { int q = partition(a, p, r); Quicksort(a, p, q-1); Quicksort(a, p+1, r); } } 归并排序(分治法) void mergesort (Type a[], int left, int right) { if (left rigth) { int mid = (left + right)/2; //取中点 mergesort (a, left, mid); mergesort (a, mid+1, right); mergesort (a, b, left, right);//合并到数组b mergesort (a, b, left, right);//复制到数组a } } 背包问题(贪心算法) void knapsack (int n, float m ,float v[], float w[], float x[]) { sort(n, v, w) //非递增排序 int i; for (i=1 ; i=n; i++) x[i] = 0; float c = m; for (i= 1; i=n; i++) { if (w[i] c) break; x[i] = 1; c -= w[i]; } if (i = n) x[i] = c/w[i] ; } 活动安排问题(贪心算法) void Greadyselector (int n, Type s[], Type f[], bool A[]) { //s[i] 为活动结束时间, f[j]为j活动开始时间 A[i] = true; int j= 1; for (i=2; i=n; i++) { if (s[i] = f[j]) { A[i] = true; j=i; } else A[i] = false; } } 喷水装置问题(贪心算法) void knansack (int w, int d, float r[], int n) { //w为草坪长度 d为草坪宽度 r[]为喷水装置的喷水半径, //n为n种喷水装置 , 喷水装置的喷水半径 = d/2 sort (r[], n); //降序排序 count = 0; //记录装置数 for (i=1; i=n; i++) x[i] = 0; //初始时, 所有喷水装置没有安装 x[i]=0 for (i=1; w = 0; i++) { x[i] = 1; count ++; w = w - 2*sqart(r[i]*r[i] - 1); } count 装置数: count end1; for (i=1; i= n; i++) count 喷水装置半径: r[i] end1; } 最优服务问题(贪心算法) double greedy (rectorint x, int s) { rector int st(s+1, 0); rector int su(s+1 ,0); int n=x.size(); //st[] 是服务数组, st[j]为第j个队列上的某一个顾客的等待时间 //su[] 是求和数组, su[j]为第j个队列上所有顾客的等待时间 sort(x.begin(), x.end()); //每个顾客所需要的服务时间升序排列

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档