没有合适的资源?快使用搜索试试~ 我知道了~
首页python算法分析与设计实验报告
资源详情
资源评论
资源推荐

算法分析与设计实验
一、实验目的
、熟悉 编程环境,包括程序安装
、熟悉 基本语法
、递归算法程序分析与调试
二、实验工具
操作系统、 编译环境、 编译器
三、实验内容
本次实验是利用递归算法,用 中的绘图库 ,实现画出科赫雪花。
雪花曲线的构造从一个正三角形开始,把每条边分成三等份,然后以各边的中
间长度为底边,分别向外作正三角形,再把“底边”线段抹掉,这样就得到一个
六角形,它共有 条边,再把每条边分成三等份,以各中间部分的长度为底边,
向外作正三角形后,抹掉底边线段,反复进行这一过程,就会得到有个“雪花”
样子的科赫曲线。
四、实验过程
本实验采用递归算法完成曲线绘制:如果 ,直接画出长度为 的直线。如果
(第一次迭代),画出长度为 的线段;画笔向左转 度再画长度为
长的线段;画笔向右转 度画长度为 长的线段;画笔再向左转 度画出
长度为 的线段。如果 ,第 次迭代相当于:第 次迭代;画笔左转
度; 次迭代;画笔右转 度;第 次迭代;画笔左转 度;第 次迭

代。本次实验设 ,用 遍历循环角度,在最外层的循环执行后,再调用下
一阶及相应的长度。程序代码如下:
!"#$ %&!'(
!(
)!$ %'
(
*+&&&,(
-$*'
"#$ %&!'
!$'(
$.&.'
$'
*$&'
!)$'
%$'
#$/*/'
"#$&'
*$'
"#$&'
*$'
"#$&'
!$'
!$'
$'
五、实验结果与分析

实验二、快速排序算法
一、实验目的
、熟悉 编程环境,独立编写程序实验代码
、熟悉 基本语法
、快速排序算法程序分析与调试
二、实验工具
操作系统、 编译环境、 编译器
三、实验要求
、数据可以预充设定,也可以由程序产生随机数,数据个数不限
、要求给出算法思想或原理
、要求分析算法复杂度,并与选择排序、插入排序、或合并排序的复杂度作对
比对照

四、实验内容
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数
据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进
行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
如序列,,,,,,选择 作为基准数。从右向左扫描,寻找比基
准数小的数字为 ,交换 和 的位置,,,,,,,接着从左向右
扫描,寻找比基准数大的数字为 ,交换 和 的位置,
,,,,,。重复上述过程,直到基准数左边的数字都比其小,右边
的数字都比其大。然后分别对基准数左边和右边的序列递归进行上述方法。
五、实验步骤
、设置两个变量 、,排序开始的时候:,;
、以第一个数组元素作为关键数据,赋值给 ,即 ;
、从 开始向前搜索,即由后开始向前搜索,找到第一个小于 的值
,将 和 互换;
、从 开始向后搜索,即由前开始向后搜索,找到第一个大于 的
,将 和 互换;
、重复第 、 步,直到 ; 步中,没找到符合条件的值,即 中
不小于 中 不大于 的时候改变 、 的值,使得 ,,
直至找到为止。找到符合条件的值,进行交换的时候 , 指针位置不变。另外,
这一过程一定正好是 或 完成的时候,此时令循环结束)。

六、实验心得
通过本次实验,我更深一步熟悉了 的编程环境, 的基本语
法,了解了快速排序算法的基本思想,即选取数组中一个数为基准数,一次排
序过程中,将比基准数小的都放在它左边,比基准数大的不动。然后经过一次
排序,左边部分都比基准数小,右边都比基准数大,然后对左右两边分别进行
同样的排序。并对快速排序算法程序进行了分析和调试。
七、实验结果截图
八、实验源码
!"#$%&'( ()% *
()% + *
()%
,)( &'(
-. + *
-. + ) &'( / ,)(*
&'( &'(
-. + ) &'( + ,)(*
&'( &'(
&'( ,)(
!"#$%&'( ()%
!"#$%&'(
%"% &'(
&'( 0
%1快速算法排序结果*1
!"#$%&'( .&'(
剩余26页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0