杨茗
桂林理工大学 广西桂林 541004
摘要:文章分析了算法对程序时间和空间方面的的性能优化。在软件开发过程中,算法发挥着至关重要的作用,可以为程序的性能方面奠定基础。针对计算机科学领域内的一些问题,可以通过算法对其进行总结和归纳,尽可能使用数学方式计算。 作为一种算法思想,在解决一些实际应用方面的问题,一个优秀的算法可以大大提高程序的速度,大大提高用户体验。在软件开发的过程中借助算法可以对编程过程进行优化,使程序更为简便,发挥出算法的基础价值。
关键词:算法;软件开发;分析
信息化时代下,软件开发属于发展主要产物。计算机在各个领域内都得到了有效使用,计算机技术的不断升级主要是因为计算机内部程序在持续优化,其中速度和时间是衡量一个程序是否需要优化的条件。因此这时为了提高开发出软件的质量,因此应该借助算法提升使用效率,针对软件内存在的问题进行解决。
1.贪心算法分析
贪心算法,顾名思义就是重点在于“贪心”,着眼于当前情况下的问题进行分析,每次选择眼前最大的那一个解,即当前最好的选择。因此带来的问题就是贪心算法不能保证最后的解是最优的,并且它不能用来求解最大值,最小值问题。下面给出贪心算法的一般结构:
设n个程序集合为D={1,2,3…,n},其中每个程序都需要使用相同资源,且在相同时间内只有一个程序可以使用该资源,而每个程序u都具有使用资源的固定时间si和结束时间fi,si>fi。假如活动u,那么这时在半开时间区间[si,fi)内占用资源。在[si,fi)与区间[si,fj)不相交,那么这时程序i和j是相容的,若si>=fj,sj>=fi的时候,程序i与j相容。
为了对上述内容进行验证,计算机代码为:
#include<stdio.h>
#include<ostream>
#include<algorthm>
Using namespace std;
Struct node
{
Int start
Int end
}a[11111];
Bool cmp(node x,node y)
{
If(x.end<y.end) return true;
Else if(x.ens==y.end&& x.start>y.start) return true;
Return false;
}
int main()
{
Int n,I,ans,end;
Cin>>n;
For(i=0,i<n;i++) cin>>a[i].start>>a[i].end;
Sort(a,a+n,cmp);
ans=0;
end=-1e9-100;
for(i=0;i<0;i++){
ans++;
end=a[i].end;
}
}cout<<ans<<endl;
Return 0;
}
2.贪心算法在软件编程中的实例
程序优化过程中为了提升优化效率就需要采取较为高效的方式,针对算法的客观评价可以分为时间复杂度和空间复杂度。针对相同问题来看,可以采取多种方式获得解答,数学算法质量会对程序优化及计算效率产生一定的影响[1]。所以在编程的时候,对于算法的选择应该考量到算法效率,不可单纯追求简单计算,应该使算法选择和编程有机结合,从而提升计算准确性。根据问题解决模型,在基础编程方面进行实例分析:
这是一条ACM竞赛的题目,典型算法为贪心算法,题目为:有n个人正在饭堂排队买海北鸡饭。每份海北鸡饭要25元。奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25、50、100元),而且饭堂阿姨一开始没有任何零钱。请问饭堂阿姨能否给所有人找零?
从题目里面可以知道,50元和100元需要找钱,先满足找钱的条件,才能具体的操作找钱。
其中,50元需满足的找钱条件为:阿姨口袋中25元钱的个数>=1;100元需满足的找钱条件为:阿姨口袋中25元和50元各一张或者25元钱个数>=3; 而25元不需满足找钱条件,由此可得到以下代码:
采取C++实施的编写后,计算机代码为:
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int a[1000000];
int main()
{
int n,i;
int money25=0;//阿姨口袋中25元的个数
int money50=0;//阿姨口袋中50元的个数
int money100=0;//阿姨口袋中100元的个数
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
int flag=1;//阿姨是否可以给所有人成功找钱
for(i=0;i<n;i++)
{
if(a[i]==50)//第i个人前面必须有一个25元 ,才符合找钱条件
{
if(money25>=1)//符合找钱条件
{
money25--;
money50++;
}
else
{
flag=0;//找钱失败
break;
}
}
else if(a[i]==100)//第i个人前面必须有一个25和50元或者3个25元 ,才符合找钱条件
{
if(money50>=1&&money25>=1)
{
money50--;
money25--;
money100++;
}
else if(money25>=3)
{
money25-=3;
money100++;
}
else
{
flag=0;//找钱失败
break;
}
}
else//手里拿着的是25元,阿姨不用找钱
money25++;
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
结语
综上所述,文章以实例分析了在编程中对于贪心算法的使用,当然在算法中远不止贪心算法,还有很多的高效算法可以大大提高编程的时间复杂度和空间复杂度。在实际应用中,借助一些典型的简便算法可以在一定程度上降低计算机的相关计算量,将复杂的内容简化,降低计算难度,从而提升计算效率。针对这一特点,将算法引入计算机编程中进行应用设计出软件开发编程逻辑分析过程,从根本上解决编程复杂的问题,优化计算机编程。
参考文献
[1] 斯琴, 宋焕林. 数学算法对计算机编程优化的研究[J]. 电脑编程技巧与维护, 2018, 000(004):70-71,77.
[2] 王言中. 数学算法对计算机编程优化的思考[J]. 电脑迷, 2018, 01:166-166.
[3] 杨盛文. 数学算法在计算机编程优化中的作用[J]. 电脑迷, 2018, 000(025):102-102.
作者简介:杨茗,1999年9月11日,女,汉族,江苏仪征,大学本科,学生,研究方向:软件工程