python中的调度算法FCFS

问题描述 投票:1回答:1

我需要在Python中实现First Come First Served调度算法,因此我必须按升序对到达时间进行排序。我得到错误list index out of range。排序的条件应该是什么?我认为我的情况是正确的,但它不起作用。

arrival_time=[]

burst_time=[]

ch=int(input("Enter number of processes:"))

i=0

while i<ch:

    a=int(input("Enter arrival time:"))
    b=int(input("Enter burst time:"))
    arrival_time.insert(i,a)
    burst_time.insert(i,b)
    i=i+1

print("Process Arrival Time  Burst Time ")
print(arrival_time,burst_time)

count=0

for j in range(ch-1):
     for l in range(l+1+count,ch):
        if arrival_time[j]>arrival_time[l+1+count]:
            temp=arrival_time[j]
            arrival_time[j]=arrival_time[l+1+count]
            arrival_time[l+1+count]=temp
     count=count+1


print(arrival_time)  
k=0
sum=0
print("Gantt Chart")

while k<ch:
    if k==0:
        sum=sum+burst_time[k]      
        print(arrival_time[k],"------",sum)

    elif k>0:

        sum1=sum+burst_time[k]       
        print("-------",sum1)

    k=k+1
python python-3.x
1个回答
0
投票
bt=[]
print("Enter the number of process: ")
n=int(input())
print("Enter the burst time of the processes: \n")
bt=list(map(int, raw_input().split()))

wt=[]
avgwt=0
tat=[]
avgtat=0

wt.insert(0,0)
tat.insert(0,bt[0])

for i in range(1,len(bt)):
   wt.insert(i,wt[i-1]+bt[i-1])
   tat.insert(i,wt[i]+bt[i])
   avgwt+=wt[i]
   avgtat+=tat[i]

avgwt=float(avgwt)/n
avgtat=float(avgtat)/n
print("\n")
print("Process\t  Burst Time\t  Waiting Time\t  Turn Around Time")

for i in range(0,n):
   print(str(i)+"\t\t"+str(bt[i])+"\t\t"+str(wt[i])+"\t\t"+str(tat[i]))
   print("\n")

print("Average Waiting time is: "+str(avgwt))
print("Average Turn Arount Time is: "+str(avgtat))

运行:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.