有n 个文件需要存储在磁盘上,第i 个文件需要p i 个字节的存储空间,i =1,2,…,n 。磁盘的总容量是C ,且C p n i i >∑=1. 如果要求存入的文件个数达到最多,选用哪种算法设计技术?简述算法设计思想,证明算法的正确性,并估计算法最坏情况下的复杂度.
时间: 2023-06-15 20:04:26 浏览: 236
贪心算法解决磁盘最优存储问题 问题描述: 设磁盘上有n个文件,f1,f2,…,fn,,每个文件占磁盘上1个磁道 这n个文件的
这是一个经典的背包问题,可以使用贪心算法来解决。
算法设计思想:按照文件大小的比例从大到小排序,先存储占用空间大的文件,直到磁盘容量不足为止。
证明算法的正确性:假设存在最优解不是先存储占用空间大的文件,而是先存储占用空间小的文件。那么在存储占用空间小的文件之前,必然已经存储了一些占用空间大的文件。假设此时磁盘容量还有一些剩余空间,可以存储一个占用空间大于当前待存储的占用空间小的文件。这样就能得到更优解,与原假设矛盾。因此,贪心算法是正确的。
算法最坏情况下的复杂度为 O(nlogn),排序的时间复杂度为 O(nlogn),遍历文件的时间复杂度为 O(n)。
阅读全文