算法分析与优化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上 述三 种算 法 采用 的都是 双 循环 结 构 , 无论 是 判
2算法 的运行 时 间

三种 算 法 的运 行 次数 显 个算 法执 行所 耗 费 的 时问 , 从理 论 上是 不 能算 断单个 数还 是 判 断完所 有 数 , 算法 一执 行次 数最 多 , 算 法 二位 列 其次 , 出来 的 , 必 须上机 运 行测 试 才 能知道 。但 我们 不 可能 然 是 不 同的 ,
根处 。
图 2 算 法 四 函数 模 块
算 法 四同算 法三 比较 , 算法 执 行 的 时间进 一 步缩 内存空 间 的开销 。如何 压缩 使用 内存 成为 我们接 下 来 需 要改进 算法 的 目的所 在 。 ( 下转 第 1 1 9页 )
数; 否则 n不是 素数 。简 单说 : 就是 试 除到 n的开平 方 短 了 , 但 带 来 了新 的 问题 : 算 法在 运 行 过 程 中增 加 了 上述 三种算 法都 涉及 到如 下双循 环语 句 结构 :
如 果我 们逆 向思 维 , 结 合 也 没有 必要 对每 个 算法 都上 机测 试 , 我 们 可 以通 过 算 算 法三 执行 次数最 少 。然而 , 以范 围 内所有 整 数 的可 能 最简 因子 法 花 费 的 时 间与 算 法 中语 句 的执 行 次数 成 正 比这 种 第 三种 算法 思 想 ,
内循 环 采用 排 除 法 , 排 除那 些 因子 倍 数 关 系来 判断不 同算 法执行 所耗 费 的时 间的不 同。下面 作 为 外 循 环 , 最后 剩 下 的便 是我们 所 要 的范 围 内的所 有 我 们 通 过 分析 一 个 具 体 问题 的不 同 算法 来 说 明各 种 的非 素数 , 算 法 的执行 时间效 率 。 问题 描述 : 求 范 围[ 2 , n ] 内的所 有素 数 ( 质 数) 。

1 5
i f ( a r r [ i 】 )
处。
1 6 p r i n t F ( “ t d ”。 i ); 1 7 f r e e ( a r t ): 1 8 }
算法三: 判 断 一个 整 数 n是 否 是 素数 , 可 依 次 进 行n / 2 , n / 3 , . . . , n / s q r t ( n ) 试除, 如果 都没 有 除尽 , 则 n是 素
a r t = ( i n t * ) m a l l o c ( n + 1) ; f o r ( i = 2: i ( a n; i + )
0 9
1 0
a r t [ i] = 1:
f o r ‘ i = 2; i < = s q r t ( n ) ; i + +)
算法二: 判 断 一个 整 数 n是 否 是 素数 , 可 依 次 进


算法分析与优化
茹 小 光
( 长治 医学 院计算机 中心 山 西 长 治 0 4 6 0 0 0 )
【 摘 要】 : 本文介绍了笔者在程序设计过程 中针对同一问题的不 同算法进行分析 , 从算法执行 的
时间和wenku.baidu.com法运行使用的空间入手 , 对每种算法进行分析比较 , 不断改进和优化算法, 以求获得 算法在运
它 主要 包含 两 方面 的 内容 : 算法 的运 行 时间和 运 行使
g 3 f o r ( j = 2; j < = 口; j ”) 0 | l i f ( i t j ; ; 0 )f l a g = 1 :
a 5 0 6 g 7
0 8 8 9
i f( f l a g ̄ t0 ) { p ri n tF ( ” td ”。 i);
F la g =a: }
18 }
图 1 前三种算法采用结构
用 空 间。我们 可 以通过 对 同一 问题 的不 同算 法分 析来
评 价这 些算法 的优 劣 。
其 中, “ 口” 处可 依 次 用 n 一 1 、 n / 2 、 s q r t ( n ) 分 别 代 替
形 成前 面对 应算法 。
行 时 间和使 用空 间上 的最优 。
【 关键词 】 : 算法; 时间; 空间; 效率; 因子
1引 言
0 1 f or ( i= 2; i < = n: i ++ ) 0 2 {
在 进行 程序 设 计 时 , 同一 问题 可 以用 不 同 的算法
解决, 而 一个算 法 的质 量优 劣将 影 响 到程 序运 行 的效 率 。在 存储 空 间和 程序 运行 时间要 求 苛刻 的情 况 下 , 就 必须 对各 种 算法 进行 分析 , 其 目的在 于选 择 合 适算 法 和 改进 算法 。算 法分 析主 要 是指 分 析算 法 的效 率 ,
g l u o i d p r i m e 4 ( u n s i g n e d n)
日 2{
g 8 u n s i g n e d i 。 J ;
0 4 i n t * a r r:
0 5
06
i f ( n < 2)
ret urn:
0 7 0 8
算法一: 判 断 一 个整 数 r l 是 否 是 素数 , 可 依 次 进 行 n / 2 , n / 3 , . . . , n / ( n 一 1 ) 试除 , 如果都没有除尽 , 则 n是 素数 , 否 则 n不 是素 数 。简单 说 : 就 是试 除到 n的前 一
个数 。
素数, 具体算 法如 图 2所示算 法 四 函数 模块 。
1 1
i f ‘ a r r [ i 】 )
1 2 1 3
1 “
f o r ( j = 2 * i ; j < = n ; j + = i ) a r r [ J 】 = 0 ;
f o r ( i = 2: i < n: i + + )
行 n / 2 , n / 3 . , n / ( n / 2 ) 试除 , 如果都没有除尽, 则 n是 素 数。 否 则 n不是 素数 。 简单说 : 就 是试 除到 n的二 分之
相关文档
最新文档