| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 561 人关注过本帖
标题:[求助]如何写好这个算法的源程序
只看楼主 加入收藏
欣儿
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-7-5
收藏
 问题点数:0 回复次数:3 
[求助]如何写好这个算法的源程序

在做一道题目时,我根据题目写了算法,但我不会写源程序,希望大家能帮忙,还希望大家能指出算法的不足之处

题目:

在一个给定的线性表中删除元素值在x到y之间的所有元素,要求以较高的效率实现

算法思想:先将向量A中所有在x到y之间的元素置成一个特殊的值0,并不立即删除它们,然后从最后向前依次扫描,删除为0的元素,移动后面的元素。

void del(A,n,x,y)
int A[];
int n,x,y;
{
int i,k;
for (i=1; i<=n; i++)
if (A[i]>=x && A[i]<=y) A[i]=0;
for (i=n; i>=1; i--)
if (A[i]=0)
{ for (k=i; k<=(n-1); k++) A[k] = A[k+1]; n--;
}
}

请大家帮忙写出源程序


搜索更多相关主题的帖子: 源程序 算法 元素 
2006-07-05 16:07
风月无边
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-6-20
收藏
得分:0 

此题有一定的不严密性,不能直赋值0的,如果原线形表中有0元素,却不在x到y范围中,那么岂不是也给删了,所以不用先找,然后在删除,可以直接从后边找的,找到一个后边的元素向前移即可,想想你赋值后,照样要前移,为何不找到后直接前移,反而有赋值后才去前移,这样也可以提高效率的啊 ?

2006-07-05 19:31
风月无边
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-6-20
收藏
得分:0 

void del(A[],int &n,int x,int y)
{
int i,k=0;
for(i=0;i<n;i++)
if((x=<A[i])&&(A[i]<=y))
k++;
else
A[i-k]=A[i];
n=n-k;
}
此算法的时间复杂度是O(n);

2006-08-04 16:45
zhexingwei
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-7-28
收藏
得分:0 

牛X

2006-08-10 21:21
快速回复:[求助]如何写好这个算法的源程序
数据加载中...
 
   



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

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