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

3.对拆法<2004.9.29>(注:接......(二))

这种"算法"目前在谭浩强教授主编的<C程序设计>中,主要用在对一系列数组进行排放. 我给这种方法下的定义是将一组数组数据对开各一半的进行运算的思路,称为"对拆法". 下列,我们先看一道例题: #include<stdio.h> void inv(int *x,int n) {int *p,temp,*i,*j,m=(n-1)/2; int i=x;j=x+n-1;p=x+m; for(;i<=p;i++,,j--) {temp=*j;*i=*j;*j=temp;} return; } main() {int i,a[10]={3,7,9,11,0,6,7,5,4,2}; inv(a,10); printf("the array has been inverted:\n"); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n");}

大家可以看一下子函数inv(......);它采用的就是"对拆法".原理(或称实现过程)是找到一个数组的中间值作为标志;然后,将最后的一个数与最前面一个数进行调换......这个程序中,m的值是中间值,j的值是该数组的最后一个数组.i的值是该数组最前面的一个.(当然,我这里分析的是初始值.) 我们大家都知道,"举一反三"的这个道理.我相信,这种方法一定可能在解决其它一些问题上得到应用.

4.筛选法<2004.9.29>

这种方法我个人认为应用得比较广泛.我根据个人的想法,给这种算法下的定义是为了进行实现某个问题,将一组可能实现问题的庞大的集合逐步分拆成一个一个相对比较小的范围进行分析,筛选出结果值,再缩小范围,再筛选;最后得出解决问题的比较全面的结果. 下面我们要看一个例子(用于实现对几个元素进行排序). main() {int ri[]={1,5,7,9,10,8,11,21,6,9}; int i,j; for(i=0;i<=9;i++) for(j=i;j<=9;j++) {if(ri[i]<ri[j]) ri[i]=ri[j];....(略)}}

大家可以看两个FOR循环语句,它这个程序的实现过程是:首先将第一个数组去与所有的数组作比较,如果大于它就替换,这样就得出了第一个数组10个数组元素中最大的一个;接着,将第一个元素筛选出来,将第二个元素再去与从第二个元素开始的范围进行比较.按照这种思路;最后就实现了我们需要的结果值.(未完待续(四)

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

个人主页:wwweye.126.com

QQ:4360538

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

搜索更多相关主题的帖子: 算法 
2004-10-05 23:29
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
得分:0 
谢谢

个人主页:wwweye. C语言正在学习中...... --------------------------------------------------
2004-10-07 15:52
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
得分:0 
我在书上看到时候,提过“冒泡法”;可是我不知道是怎么进行的?现在,听这么一说,我觉得是挺像!

个人主页:wwweye. C语言正在学习中...... --------------------------------------------------
2004-10-12 16:24
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
收藏
得分:0 
我看了第6楼的贴子,觉得是有那么回事,减少了不必要的循环次数。

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



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

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