1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
大蒟蒻 920a583abc
Wed, 11 Mar 2020 19:37:48 +0800
6 years ago
..
.vscode Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
192181-30+雷宇辰+作业1 Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Benchmark.cpp Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Benchmark.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
CMakeLists.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Partition.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
PartitionPerf.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
PartitionTest.cpp Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Timer.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Utilities.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
YourFib.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
YourPartition.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
hw1Test.cpp Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
hw1Test.gcda Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
hw1_2.xlsx Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
readme.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago

readme.txt

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

数据结构 作业1
2020年春

目标本次作业练习C++语言程序设计、算法时间复杂度分析,体会数据结构课程的学习目标


开始:
(1)解压hw1.rar得到hw1文件夹。hw1文件夹包含一个hw1_2.xlsx、YourFib.h、PartitionPerf.h、YourPartition.h和hw1Test.cpp。

hw1_2.xlsx是作业1第2题的Excel文件要求完成其中的表1、表2。第3小题 图1选作。

hw1Test.cpp文件中main函数的第一部分实现测试Fib类第二部分实现测试Partition操作。

YourFib.h文件包含2阶斐波那契数列项Fib类的定义和你的实现。

YourPartition.h包含你的数组划分算法算法中需要分别合计算法中元素移动次数、元素值比较次数和辅助空间字节数并返回。

PartitionPerf.h文件获取并输出数组划分算法性能数据包括测试数据的生成、所耗时间的统计等。具体测试方法是分别对随机生成的大小为 5 - 600 (间隔为 5的200个数组进行划分累加所耗时间、元素移动次数、元素值比较次数和辅助空间字节数。程序会自动输出测试数据统计结果在Partition.txt中请你将其中的数据分别粘贴在 https://docs.qq.com/sheet/DTFVNdlhqQVVDUU9L 四个汇总表中你的姓名位置相应处hw1_4耗费总时间、hw1_4元素移动总次数、hw1_4元素移动总次数、hw1_4辅助空间总字节数。

(2)建立一个空项目添加hw1Test.cpp、fib.h、PartitionPerf.h、PartitionTest.cpp和YourPartition.h文件到项目中。

(3)任务hw1_3选做)
fib.h中Fib类的成员函数Value()实现计算2阶斐波那契数列第n项数值的功能。要求你设计Value()函数并把代码填在fib.h文件的Value()函数中。编译、链接、调试程序,直至运行结果正确。
    例如,测试用例如下
	n 	Fib(n)
	0	0
	1	1
	2	1
	3	2
	4	3
	5	5
	6	8
	7	13
	8	21
分析Value()函数的时间复杂度。

(4)任务hw1_4
已知整数数组Vector[0..n-1]检测整个数组进行划分以Vector[0]为基准元素通过将小于基准的交换到左侧或大于基准的交换到右侧将基准元素定位并返回基准元素的位置。试编写YourPertition.h中的 int Partition(int x[], int n, int &movenum, int &compnum,int &bytesnum)函数实现划分函数返回基准元素的定位位置并统计算法中元素移动的次数、元素值比较的次数和使用辅助空间的字节数。其中movenum返回元素移动总次数compnum返回元素值比较的总次数bytesnum返回使用辅助空间的总字节数。

例如 数组: [20 23 66 23* 19 09]n=6
处理后可能的数组状态1[09 19] 20 [23* 23 66] 返回值为2。
处理后可能的数组状态2[19 09] 20 [23  23* 66] 返回值为2。
处理后可能的数组状态3[19 09] 20 [66  23* 23] 返回值为2......

要求仅扫描数组一次。如果完成算法,进一步优化算法,使得算法使用更少的缓存和更少的元素移动次数、更少的元素值比较次数。

统计说明:
算法中如果Vector[i](0<=i<=n-1)出现在赋值号“=”两端则movenum需累加一次。
调用一次swap函数movenum需累加三次。
凡出现Vector[i]和Vector[j](0<=i,j<=n-1)比较大小则compnum需累加一次。
凡出现定义辅助变量或数组则bytesnum需累加相应的字节数。C++中sizeof(int)为4。

5)编写你自己的readme.txt文件按照结构体程序设计方法或面向对象程序设计方法 展示你的算法以及设计过程分析Value()的时间复杂度Partition()函数的时间复杂度和空间复杂度。
6)压缩   hw1_2.xlsx+.h+.cpp+.exe+.dsw/.dsp+readme.txt+你的测试数据.txt 成包(.zip\.rar)。命名规则:班级-序号+姓名+作业1提交到datastructurecp@163.com。


说明:
1、程序都在Visual Studio 2013 编译通过。
2、鼓励大家多思考多分析做出自己想要的优化的程序和系统。
3、鼓励大家多查找学习网上资料、程序并将它们整理、分享到群里。
4、鼓励大家勤交流、勤分享、勤讨论以设计并实现出优化的程序和系统但不分享代码