数据结构-算法

本文介绍了算法的基本概念,包括定义、特性及设计要求。重点讨论了算法效率的度量方法,如事后统计和事前分析估算,强调了时间复杂度和空间复杂度在算法评估中的重要性。通过实例比较不同算法的时间复杂度,阐述了如何推导大O阶,并列举了常见的时间复杂度等级。同时,提到了最坏情况、平均情况和最好情况的时间复杂度,并指出通常关注最坏情况的时间复杂度。
摘要由CSDN通过智能技术生成

一个例子

计算1到100的前n项和

第一种算法


int i,sum=0,n=100;
	for(i=1;i<=n;i++){
   
	{
   
		sum=sum+i;
	}
	printf("%d",sum);
}

第二种算法
((1+100)+(2+99)+…+(100+1))/2=(101*100)/2

int sum=0,n=100;
sum=(1+n)*n/2;
printf(%d",sum);

第一种算法要循环100次,当这个n项和很大的时候,效率远远低于第二种.这就是算法的好处。

算法

算法的定义

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作

算法的特性

输入、输出、有穷性、确定性和可行性

输入输出: 算法具有0个或多个输入,算法至少有一个或多个输出。输出的形式可以是打印输出,也可以是返回一个或多个值等。
有穷性: 算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤都在可接受的时间内完成
确定性: 算法的每一条步骤都具有确定的含义,不会出现二义性。
可行性: 算法的每一步都必须是可执行的,也就是说,每一步都可以通过执行有限次数完成

算法设计的要求

正确性:

算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到正确的答案。

算法的正确通常在语法上有很大差别,大体分为以下四个层次:

  1. 算法程序没有语法错误
  2. 算法程序对于合法的输入数据能够长盛满足要求的输出结果
  3. 算法程序对于非法的输入数据能够得到满足规格说明的结果
  4. 算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果
    通常我们把层次3作为一个算法是否正确的标准。

可读性:

算法设计的另一目的是为了便于阅读、理解和交流

个人认为可读性应该是算法具有很好的逻辑性,层层递进或者实现方式显而易见。比如变量名称的命名、括号等等。必要的时候可以加上注释便于自己阅读检查和他人阅读。
健壮性:

一个好的算法应该考虑到输入数据不合法的情况
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值