贪心算法-磁盘文件最优存储问题

贪心算法在磁盘文件存储问题中扮演关键角色,不同于常规的单调排序,而是依据文件检索概率从中间向两边递减排列,以最小化检索期望时间。文章探讨了如何根据文件的检索概率p1到pn以及磁道之间的径向距离d(i, j)来优化文件存储,以降低磁头移动成本。" 88424435,8320079,Linux Jumpserver堡垒机部署与使用详解,"['Linux运维', '网络安全', '堡垒机', 'Jumpserver', '系统管理']
摘要由CSDN通过智能技术生成

贪心算法通常是对某一值进行排序,然后再采取贪心策略进行求解。此问题贪心角度不同以往。它的排序不是严格单调排列,而是将相应值的分布从中间往两边依次减少排列。

题意:设磁盘上有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|。

代码:

/**
  @贪心算法-磁盘文件最优存储问题
  @ author-狂热的coder
*/
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
    return a>b;
}
/*将数组a的值排序使其元素的分布从中间往两边依次减少*/
void strageSort(int n,int a[]){
      int i,k,mid;
      sort(a,a+n,cmp);
      mid = n/2;
      int b[n+1];
      b[mid] = a[0];
      for(i = 1,k = 1;i< n;i++,k++){   //数组a的值分布从中间往两边依次减少
            b[mid-k] = a[i];
            i++;
            if(i!
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值