数据结构实验报告-01

一、实验目的和要求


要求:
1.按照群文件中的报告内容,首先进行设计工作并加以文字记录,然后编写代码,测试,分析,再二次完善报告,形成完整的文字记录。
2.再次强调,报告中主要以文字、图表的方式,进行工作记录,不准直接扔代码进去!源代码代码作为附录放在文档的最后一项。
3.报告中,要求,对代码运行结果尽量截屏贴图,以示是代码能够成功运行
4.报告中,建议总结部分,尽可能认真总结。

5.不要怕写报告麻烦

二、实验环境

Codeblocks  

  • 实验内容

01.完成尽可能多的数据排序,并显示运行时间。

  

四、实验过程

4.1 任务定义和问题分析

4.2 数据结构的选择和概要设计

4.3 详细设计

 

五、测试及结果分析

对各种数据运行程序和算法的结果记录和分析,并对错误所作的修改和结果。

5.1 实验数据

数据/时间(s)

初次

整理代码后

最终

100

2.84

2.835

2.835

1000

2.971

2.962

2.962

10,000

/

3.942

3.942

100,000

/

34.271

34.271

1000,000

/

7.485

7.485

5.2 结果及分析

1.最初找到的时间函数特别复杂,需要创建类之类的,增大了我的理解难度。于是更换了许多次,找到了较为简单的一种方法。

     

 

  1. 从100-1000测试的时候,发现代码有点混乱,稍加整理后,程序运行时间加快了。如图

 

 

3.100,000时运行也很正常

 

4.1000,000时程序崩了,我尝试换了编译器,在visual studio上扩大了栈,在Dev上尝试运行,均失败。求助后,在好友的电脑上测试出1000,000 7.485sd的结果。

六、实验收获

  这次实验,可以用跌宕起伏来形容。从最开始在课上敲冒泡排序的代码开始,漫长的寒假让我遗忘了很多知识,甚至于冒泡排序都是磕磕绊绊的敲出来的。在知道这次课后作业后,我还是选择了用冒泡排序作为排序方法,并寻求一种最为简洁易懂的方式完成要求。这次作业迫使我接触了很多之前没有了解的东西,比如:随机数和时间函数。随机数,只是之前看别人使用过,而在我的编译器中,它是第一次出现的。而寻找时间函数的代码更是“跌宕起伏”,最开始搜到的代码全是非常高级的表达,有class,有指针,有多个函数的调用,而对于遗忘了很多知识的我来说,说是“看天书”也不为过,因不会使用(当然也有时间方面的种种因素),我选择放弃,去寻找其他更为简单的方法。在翻看了n个网页后,我终于在一个小角落找到了我现在使用的这个方法(虽然和其他人交流后得知他们都是轻而易举的找到了简单的方法),很是激动!!!一番周折后,我终于组装好了自己的代码,开始测试阶段。本着简单的原则,我选择了十倍测试,从100-1000,看着代码运行出来,确实很开心,不过我发现我的代码长得“有点丑”,有多个空格,以及一些看起来很不规整的问题,在调整了一番过后,我发现运行时间缩短了一点。测试到1000,000时,程序崩了,我一开始觉得可能是编译器的问题,下载了visual studio,还是运行失败,有同学告诉我,可以把栈改大,这样数据就不会溢出了,我又去搜索了更改的方法,不过结果还是失败,随后,好友在她的电脑上帮我测试了1000,000的数据。经过这次作业,我感觉我的意志经受了磨砺,抗挫折能力也得到了增强,收获了很多。

七、参考文献

八、附录(源代码)

#include <iostream>

#include <fstream>

#include <stdlib.h>

#include <ctime>

using namespace std;



int main()

{

  fstream fso("data.txt", ios::out);

  clock_t startTime,endTime;

  startTime = clock();//计时开始

  int i;

  for(i = 0; i < 1000000; ++i)

    fso << rand() << ' ';

    for (int i = 0; i < 2147483640; i++)

     {

         i++;

     }

  fso.close();



  fstream fsi("data.txt", ios::in);

  int x[1000000];

  for(i = 0; i < 1000000; ++i)

    fsi >> x[i];



  int j;

  for(i = 0; i < 1000000; ++i)

    for(j = 999999; j > i; --j)

      if(x[j - 1] > x[j])

      {

        int t = x[j];

        x[j] = x[j - 1];

        x[j - 1] = t;

      }

  for(i = 0; i < 1000000; ++i)

    cout << x[i] << '\t';

    cout <<endl;

     endTime = clock();//计时结束

     cout << "The run time is: " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;



  return 0;

}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值