贪心算法☞磁盘文件最优存储问题
来源:互联网 发布:美工兼职 编辑:程序博客网 时间:2024/05/22 05:10
------------------------------------------------------------Sun---------------------------------------------------------------------------
问题描述:
设磁盘上有n个文件,f1,f2,…,fn,,每个文件占磁盘上1个磁道。这n个文件的检索概率分别是p1,p2,…,pn,且p1+p2+…+pn =1。磁头从当前磁道移到被检信息磁道所需的时间可用这2个磁道之间的径向距离来度量。如果文件pi存放在第i道上,1<i<n ,则检索这n 个文件的期望时间是 ∑【Pi*Pj*d(i,j)】 ,其中 d(i,j)是第i道与第j 道之间的径向距离|i-j|。
磁盘文件的最优存储问题要求确定这n个文件在磁盘上的存储位置,使期望检索时间达到最小。
#include <stdio.h>#include <stdlib.h>#define SIZE 100int A[SIZE]; //存储输入的检索概率int B[SIZE]; //存储修改过顺序的检索概率void sort(int A[],int n);float greedy(int A[],int n);int main(){ int i ,n; printf("请输入文件个数:\n"); scanf("%d",&n); printf("请输入检索概率\n"); for(i = 0;i < n;i++){ scanf("%d",&A[i]); } printf("最小期望检索时间为:%f",greedy(A,n)); return 0;}void sort(int A[],int n){ int i,j,temp; for(i = 0;i<n;i++) { for(j=i+1;j<n;j++) { if(A[i] > A[j]) { temp = A[i]; A[i] = A[j]; A[j] = temp; } } }}float greedy(int A[],int n){ double sum = 0,t = 0; int i,j,k = (n-1)/2; B[k] = A[n-1]; //B数组中间数存储最大的检索概率 B[2] = A[4] sort(A,n); for(i = k+1;i < n;i++) { B[i] = A[n-2*(i-k)]; //B[3]= A[3] B[4] = A[1] } for(i = k-1;i >= 0;i--) { B[i] = A[n-2*(k-i)-1]; //B[1] = A[2] B[0] = A[0] } for (i = 0;i < n;i++) { sum += A[i]; for(j = i+1; j < n;j++) t += B[i]*B[j]*(j-i); } return t/sum/sum; }
0 0
- 贪心算法☞磁盘文件最优存储问题
- 贪心算法作业之磁带最优存储问题与磁盘文件最优存储问题
- 贪心算法解磁盘文件最优存储问题——算法解题报告
- 贪心算法☞磁带最优存储问题
- 磁盘文件最优存储问题
- 磁盘文件最优存储问题
- 磁盘文件最优存储
- 贪心磁盘存储问题
- 文件最优存储问题
- 最优分解问题-贪心算法
- 贪心算法:最优分解问题
- 贪心算法 最优装载问题
- 最优装载问题--贪心算法
- 磁带的最优存储(贪心算法)
- 贪心算法之最优装载问题
- 贪心算法之最优装船问题
- 最优装载问题_贪心算法
- 最优服务次序问题-贪心算法
- java.util包---LinkedList
- web服务器的工作原理及相关协议
- netstat命令使用
- linux常用查看硬件设备信息命令
- HDU 1008 猜数字
- 贪心算法☞磁盘文件最优存储问题
- python文件读写
- 分享我原油金融直播系统开发的过程心得
- 链栈的基本操作
- 如何应用assets下的文件
- 机器学习基石第七讲:the vc dimension
- Java并发:等待事件发生后所有线程继续执行
- LeetCode *** 79. Word Search
- java基础学习(3)