算法第四章上机实践报告

2.问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。

3.算法描述:运用贪心算法,一直取最小的长度的程序。(先是运用快排函数(sort())进行排序,再从数组开始取最小的程序装入磁带中,直到磁带装不下为止,用数组下标进行计数)

反证法:设a = {a1,a2,...,an}不包含最小长度的程序且它为最优解,b为最小长度的程序。

长度 :a1 > b

所以 b = {b,a2,...,an}也是最优解

b != a 与原题设矛盾。

所以最优解包含最小长度的程序

4.算法时间与空间复杂度的分析

时间复杂度,运用了sort()快排时间复杂度为O(nlog n),装数据和输入数据的算法均为O(n),所以时间复杂度为O(nlog n);

空间复杂度,sort()的空间复杂度为O(1),变量设置的时候运用到一维数组空间复杂度为O(n),所以空间复杂度为O(n);

5.心得体会

剩下的题真的好难,好多可能出现的样例情况都没有预料到,最小堆也不会用(不知道公式),很多东西都不理解,所以这次上机挺失败的,不过正因为发现了这么多的问题,才有好好学习的动力嘛,继续加油了

 

 

 

 

 

 

posted on 2019-11-17 21:34  陈宇琪  阅读(93)  评论(0编辑  收藏  举报