week2

1)编程完成待排序数据的生成

任务1:编程实现随机数生成,将随机数保存到数组中。

#include<iostream>

#include<stdlib.h>

#include<time.h>

using namespace std;

int main(){

    int a[11];

    int i;

    srand((unsigned)time(NULL));

    for(i=1;i<=10;i++)

    a[i]=rand();

    for(i=1;i<=10;i++)

    cout << a[i] << " "<<endl;

    return 0;

}

2)参照伪代码实现将元素从小到大排序的插入排序算法

任务2:对照插入排序算法的伪代码编程实现插入排序算法,输出数组检查排序编程结果的正确性。

#include<iostream>

#include<stdlib.h>

#include<time.h>

using namespace std;

int main()

{

    int a[11];

    int i;

    srand((unsigned)time(NULL));

    for (int i = 1; i <= 10; i ++)

    a[i] = rand();

    for(int j = 1; j < 11; j ++){

        int key = a[j];

        int i = j - 1;

        while( i >= 0 and a[i] > key){

        a[i+1] = a[i];

         i --;

         }

    a[i+1] = key;

    }

    for (int i = 1; i <= 10; i ++)

    cout << a[i] <<" "<<endl;

    return 0;

}

任务3:统计输入随机情况下插入排序算法的运行时间,取7组不同数据规模下算法的运行时间(10,5000,10000,15000,20000,25000,30000)。

数据规模

10

5000

10000

15000

20000

25000

30000

时间

0.145

0.1404

0.1446

0.1462

0.1529

0.1586

0.161

任务4:添加代码对于已排好序的数组再次排序,记录7组不同数据规模下算法的运行时间(10,5000,10000,15000,20000,25000,30000)。

数据规模

10

5000

10000

15000

20000

25000

30000

时间

0

0

0

0

0

0

0.1

3实现从大到小的插入排序算法并观察算法在最坏情况下的运行时间

任务5:继续添加代码,实现数据从大到小排列的插入排序算法。对从小到大排序的数据进行从大到小排序,记录7组不同数据规模下在最坏情况下插入排序算法的运行时间(10,5000,10000,15000,20000,25000,30000)。

数据规模

10

5000

10000

15000

20000

25000

30000

时间

0.257

0.289

0.305

0.329

0.3524

0.3859

0.4102

任务6:为之前获取的三批次时间数据制作折线图,观察插入排序算法在最好、最坏和平均情况下的算法运行时间,进一步理解受输入影响的算法复杂度的概念。

以上仅为完成作业的个人想法,不代表正确答案,如有错误欢迎指正 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值