算法简介

本文探讨了数据结构与算法的依存关系,强调二者在程序设计中的重要性。算法定义为解决特定问题的步骤序列,具有输入、输出、有穷性、确定性和可行性等特性。文章列举了辗转相除法等著名算法,并讨论了算法设计的正确性、可读性、健壮性和效率要求。此外,还介绍了算法时间复杂度的度量方法,包括大O记法,以及常见时间复杂度的比较。
摘要由CSDN通过智能技术生成

算法简介:
一、数据结构与算法的关系
虽然本门课程叫“数据结构”,但经常会讲到算法,以及它们之间的关系。在市面上也经常有诸如“数据结构与算法分析”这样名字的书。
实际上,数据结构与算法是依存关系。只谈数据结构而抛弃算法,则数据是“死”的,没有活力的;只谈算法而抛弃数据结构,则算法无法有所依赖的操作对象,只是空谈。对于程序来说,数据结构赋予其血肉骨骼,算法赋予其灵魂思想,二者合一才是完整的程序,二者缺一不可。因此,我们在学习数据结构的时候,经常要学习算法的相关知识。
二、算法定义
定义:算法(Algorithm):算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个动作。
对于给定的问题,是可以有多种算法来解决的。
现实世界中问题千奇百怪,算法当然也就千变万化,没有通用的算法可以解决所有的问题。甚至对于一些问题,优秀的算法却不见得适合它。(例如,对于数据量较少(万以下)的数据排序,快速排序算法的执行效率并没有比冒泡排序快上很多。)
算法示例:辗转相除法求两个正整数的最大公约数
辗转相除法,又名欧几里得算法(Euclidean algorithm),3000年前由欧几里得在其著作《几何原本》中提出,是世界上已知最古老的算法。
算法描述:设两数为a、b(a>b),求最大公约数的步骤如下:
⒈用a除以b,得到其商q和余数r
⒉若r=0,则最大公约数就是b,算法结束
⒊若r!=0,则令a=b,b=r
⒋循环执行,回到步骤1
代码描述:
/************
*函数Euclidean_algorithm()
*入参:两个整数int m,int n
*返回值:两数的最大公约数
*功能:计算两个数的最大公约数
**************/
int Euclidean_algorithm(int m,int n)
{
int r;
do{
r=m%n;
m=n;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值