数据结构(算法和算法分析)

算法包括自然语言、流程图、伪代码和程序代码等形式。数据结构是算法的基础,涉及集合、线性、树形和图状结构。算法需具备有穷性、确定性、可行性、输入和输出特性。设计时要求正确性、可读性和健壮性。时间效率和空间效率是评估算法性能的关键,可通过事后统计和事前分析度量,时间复杂度用于描述算法增长速率。
摘要由CSDN通过智能技术生成

一、算法的描述

(1)自然语言:英语,中文

(2)流程图:传统流程图,NS流程图

(3)伪代码:类语言:类C语言

(4)程序代码:C语言程序,JAVA语言程序…

 二、 算法与数据结构的关系

程序=数据结构+算法

数据结构即数据的逻辑结构;数据结构是相互之间存在的一种或多种特定关系的数据元素的集合;包括4类基本的结构,集合,线形结构,树形结构,图状或网状结构;算法指编程过程中完成一件事采用的方法;在编程过程中采用好的算法可以降低程序的时空复杂度。

三、算法的特性

 一个算法必须具备以下五个特性:

(1)有穷性:一个算法必须总是在执行有穷性之后结束,且每一步都在有穷时间内完成。

(2)确定性:算法中的每一条指令必须有确定的含义,没有二义性,在任何条件下,只有唯一的一条执行路径。

(3)可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

(4)输入:一个算法有零个或多个输入

(5)输出:一个算法有零个或多个输出

四、算法设计的要求

(1)正确性

(2)可读性

(3)健壮性

(4)高效性

五、算法效率

(1)时间效率:指的是算法所耗费的时间

(2)空间效率:指的是算法执行过程中所耗费的存储空间

算法的时间效率和空间效率有时候是矛盾的。

(3)算法时间效率的度量方法

         1、事后统计

          将算法实现,测算其时间和空间开销。

        (缺点:编写程序实现算法将花费很多时间和精力,所得实验结果依赖于计算机软硬件等环境因素,掩盖算法本身的优劣)

          2、事前分析(大多数采用)

          对算法所消耗资源的一种估算方法

算法运行时间=一个简单操作所需的时间+简单操作次数

即算法中每条语句的执行时间之和:

算法运行时间=∑每条语句的执行次数*该语句执行一次所需要的时间

(其中,每条语句所执行的次数又称为语句频度)

每条语句执行一次所需要的时间,一般是随机器而异的,取决于机器的指令性能,速度以及编译的代码质量,是由机器本身软硬件环境决定的,与算法无关。

通常来说,越高级的语言,执行速度越慢

例如:

两个n*n矩阵相乘的算法可描述为:

c1f3108823144f8c85c2ed4785af3abe.jpg

 为了便于比较不同算法的时间效率,我们仅比较他们的数量级

例如:T1(n)=10n^2  与  T2(n)=5n^3

数量级越小,时间效率越小

算法时间复杂度定义

算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法时间量度记作:T(n)=O(f(n))

它表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同,称渐进时间复杂度。

9b5b05bc5dcb4b3cb550600573b2a091.jpg

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值