设为首页 加入收藏

TOP

2011年计算机等级考试二级C语言辅导实例编程(10)
2014-10-29 12:30:07 来源: 作者: 【 】 浏览:92
Tags:2011年 计算机 等级考试 二级 语言 辅导 实例 编程

  求最大值和最小值的分治算法


  实践题目:


  给定一个顺序表,编写一个求出其最大值和最小值的分治算法。


  分析:


  由于顺序表的结构没有给出,作为演示分治法这里从简顺序表取一整形数组数组大小由用户定义,数据随机生成。我们知道如果数组大小为 1 则可以直接给出结果,如果大小为 2则一次比较即可得出结果,于是我们找到求解该问题的子问题即: 数组大小 <= 2。到此我们就可以进行分治运算了,只要求解的问题数组长度比 2 大就继续分治,否则求解子问题的解并更新全局解以下是代码。


  */


  /*** 编译环境TC ***/


  #include


  #include


  #include


  #define M 40


  /* 分治法获取最优解 */


  void PartionGet(int s,int e,int *meter,int *max,int *min){


  /* 参数:


  * s 当前分治段的开始下标


  * e 当前分治段的结束下标


  * meter 表的地址


  * max 存储当前搜索到的最大值


  * min 存储当前搜索到的最小值


  */


  int i;


  if(e-s <= 1){ /* 获取局部解,并更新全局解 */


  if(meter[s] > meter[e]){


  if(meter[s] > *max)


  *max = meter[s];


  if(meter[e] < *min)


  *min = meter[e];


  }


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2011年计算机等级考试二级C语言辅.. 下一篇2011年计算机等级考试二级C语言辅..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: