| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:[讨论]实现解决问题的算法(四)
只看楼主 加入收藏
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
 问题点数:0 回复次数:2 
[讨论]实现解决问题的算法(四)

5.选择法<2004.9.29>

我们还是以实现上一个例程为例;用选择法来实现对10个整数进行排序. main() { int ri[]={1,5,7,9,10,8,11,21,6,2}; int i,j,k,t; for(i=0;i<9;i++) {k=i; for(j=i+i;j<10;j++) if(ri[j]>ri[k])k=j; if(k!=i) {t=ri[i];ri[i]=ri[k];ri[k]=t;} ......(略) } } 这个程序的执行过程是(只说明第一个执行过程):先设定k的值为i(也就是0);然后将ri[0](也就是数组中第一个值)逐一的到以ri[1]开始的循环体中去进行比较.最终k的值将为该数组中最大值的那个数组.接着,将k的值与第一个值(也就是0)去进行比较 ;如果不相等;则将其两个数组进行互换. 注:这种方法之所以称为"选择法",是因为谭浩强教授主编的<C程序设计>的课本上是这样描述的.之所以为什么称之为"选择法";我看不去其中的缘由.望知道的网友能够给"选择法"下一个明确的定义".并能对这个例程为什么是采用"选择法"(这个例程是书本上例10.8进行改篇的)做出解释.非常感谢!

6.细分法<2004.9.29> 我给它下的定义是:为了实现某一个强大的功能;将其细化成许多子问题;然后再重新在主函数中进行组合;以最终得到一个完整的结果值. 一般来说,细分法也就是"子函数实现".所以我就不举例说明了.我相信;解决问题的算法一定不只有这几种. 在<C程序设计>中的第二章对"算法"的定义是"为解决一个问题提供的方法."在自然界中,对"算法"的划分分为"数值算法"和"非数值算法"两种.但是,我觉得不管是那一种的实现"问题的算法",你首先必须对问题的大致进行的过程必须有个了解.至少,C语言说到底它仅仅只是一个解决问题的工具. 比如说,你要求输入一个华氏度,求出摄氏温度;那你就必须要了解它们之间的的规律.也就是说你必须知道它们之间的转化公式是: 摄氏度=5/9(华氏度-32).要不然,你用再精练的语言也是难以实现的. 我的这篇贴子也相信一定有很多很多不完善的地方.但是,我真心的希望通过这篇贴子一起个头;将大家的兴趣都带动起来,各自将自己知道的认为是可行的通用的算法都提供出来,让我们大家一起在成长中学习. 2004.9.29 晚于清华泰豪软件学院 (本文完!)

--------------------------------------------------

个人主页:wwweye.126.com

QQ:4360538

--------------------------------------------------

[此贴子已经被作者于2004-10-05 23:58:24编辑过]

搜索更多相关主题的帖子: 算法 
2004-10-05 23:55
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

好贴,其实开一个贴就够,不用开4个,置顶起来也麻烦。

2004-10-06 01:45
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
得分:0 
我是在网吧临时写的,网吧的线路很忙,我很怕掉线。而且,网吧的“开始”菜单是打不开的,本来我是想输入到记事本中再复制过来的;而且下载也不行。所以,我就小心了一点。不好意思。

个人主页:wwweye. C语言正在学习中...... --------------------------------------------------
2004-10-06 02:02
快速回复:[讨论]实现解决问题的算法(四)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016177 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved