逐步求精和分治法

时间:2025-04-22

C程序设计 (Programming in C )

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

上次课程的内容提要

结构化方法的三种基本结构 顺序结构、选择结构、循环结构 在计算机软件技术的发展过程中,结构化是一种重要的技术 一个算法是描述对某类问题进行求解的一个计算过程 算法常用流程图、N-S盒图和伪代码等形式描述 流程图描述算法时直观形象,易于理解,但是不加限制地使流线随意 转向,可能使算法的逻辑难以理解 N-S盒图克服了流程图表示方法的缺点,能更好地体现结构化思想 伪代码表示算法时比较灵活,也易于修改,通常采用比较接近于计算 机程序的符号 必须掌握流程图、伪代码等常用的算法描述方法 如果一个算法不能分解为若干个基本结构,则不是一个结构化的算法

本次课内容西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

三种基本结构

顺序结构和选择结构的流程图如下图所示a成立

a条件p不成立 成立

a

A B A

条件p

不成立

B b选择结构-1

A b选择结构-2

b顺序结构

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

三种基本结构

a 循环结构 成立 不成立 当型循环结构(while型循环)如图循环结构-1所示 条件p 直到型循环结构(Until型循环) 如图循环结构-2所示 A a条件p成立 不成立

B a b

A成立

选择结构-1

A

条件p不成立 成立

a条件p不成立

b循环结构-1

b循环结构-2

A

注意循环结构与选择结构的区别

b选择结构-2西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

基本结构小结

只有一个入口 只有一个出口 结构中的每一部分都存在一条从入口到出口的路径 结构内不存在“死循环”a成立 不成立

aA B

p A b

B死循环

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

这次课的主要内容

自顶向下、逐步求精方法 筛选法求素数 简单排序算法 几种基本的算法设计方法 枚举法、迭代法、递推与递归法、分治法

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

自顶向下、逐步求精

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

自顶向下、逐步求精

“自顶向下、逐步求精”的基本思路是:先进行整体规划、再 进行详细设计,即先抽象后具体。 下面分析一个例子:筛法求素数

大约在公元前250年,古希腊数学家厄拉多赛(Eratosthenes)提出一 个造出不超过N的素数构造法,称为厄拉多赛筛法。 它基于这样一个简单的性质:如果n≤N,且n是合数,则n必为一个不 大于N的平方根的素数所整除。 基本方法如下:先列出不超过 N 的全体素数,设为2=p1< p2<... < pk ≤ N ,然后依次排列2,3,...,N,在其中留下p1 ( =2 ) ,而把p1 的倍数全部划掉,再留下p2 ,而把p2的倍数全部划掉,继续该过程, 直到最后留下pk而划去pk的全部倍数,所有留下的数就是不超过N的 全体素数。

1914年Lehmer发表了1~10006721的素数表,1951年Kulik等人扩大到 10999997,1976年,贝思和赫德森计算出1.2×1012内的素数表,…

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

筛法求素数

求出不大于正整数N的所有素数 排列2,3,...,N,取出2,再从中删除2的倍数; 取出3,再从中删除3的倍数; 剩余的数中最小者k必为素数,取出k,再从中删除k的倍 数;重复这一步,直到所有的数都已取走或被删除; 所有取出的数汇集 在一起就形成了不大于N的素数表

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

筛法求素数开始置prime为空,sieve包含整 数2,3,...,n

设有两个筛子,分别用sieve和 prime标识,初始时prime为空, 元素2~n放在sieve中 算法结束时,sieve为空,而不大 于n的素数都放在prime中j←k

sieve不为空?

N

Yk←找出sieve中最小的数

N将k放入prime中

j≤n?

Y 求精j表示k的 倍数从sieve中去掉j j←j+k

从sieve中去掉k及其倍数

结束西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

简单排序算法

西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

三个整数排序开始输入三个整数a,b,c a<b? N a<c? N b<c? N 输出a,b,c的值 结束西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

Y Y

交换a和b的值 交换a和c的值 交换b和c的值

Y

算法:三个整数排序 BEGIN input a,b,c; /*输入三个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if b<c then 交换b和c的值; print a,b,c; END

五个整数排序算法:五个整数排序 BEGIN input a,b,c,d,e; /*输入五个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if a<d then 交换a和 …… 此处隐藏:2909字,全部文档内容请下载后查看。喜欢就下载吧 ……

逐步求精和分治法.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219