首页 > 解决方案 > 我正在尝试在 OS 中的 python 中做一个最适合的算法

问题描述

我正在尝试获取应该显示的输出,但 blockSize 与 memorySize 相同(正在减少,但我需要我的 blockSize 保持其初始值)另外,如果您可以建议对最佳拟合进行任何改进,一定要告诉!

def bestFit(blockSize,m,jobSize,n):
    allocation=[-1] * n
    memorySize=blockSize
    print(blockSize)
    for i in range(n):
        bestId = -1
        for j in range(m):
            if memorySize[j] >= jobSize[i]:
                if bestId == -1:
                    bestId = j
                    
                elif memorySize[bestId] > memorySize[j]:
                    bestId = j
                    
        if bestId != -1:
            allocation[i] = bestId
            memorySize[bestId] -= jobSize[i]
    print(blockSize)
    print("Job No. | Job Size. | Memory Size | Internal Fragmentation")
    
    for k in range(n):
        print("   ",k, "     ",jobSize[k],"         ",blockSize[allocation[k]],"            ",blockSize[allocation[k]]-jobSize[k])
        
blockSize = [100, 500, 200, 300, 600] 
processSize = [212, 417, 112, 426] 
  
bestFit(blockSize, len(blockSize) , processSize, len(processSize))

标签: pythonfunction

解决方案


您应该使用copy.copy()在第 3 行中获取变量的副本

from copy import copy

def bestFit(blockSize,m,jobSize,n):
    allocation=[-1] * n
    memorySize=copy(blockSize)
...

推荐阅读