# #go #operating-system #stride
Вопрос:
Есть срез рабочих мест. Каждое задание имеет значение пропуска, шаг=большое число/билеты, билеты. Я пробую сбросить шаг и попытался добиться следующего:
- проверьте самый низкий проход
- если проходы равны, вместо этого проверьте шаги
- возвращаемое наименьшее число
Похоже, я что-то упускаю. Нужна помощь, чтобы исправить эту функцию.
Я проверил на:
//size, tickets int, estimated time.Duration
k(t010, 0, 100), // a
k(t010, 0, 50), // b
k(t010, 0, 250), // c
мой код:
//
func getNewJob....
min := LowestVal(joblist...)
joblist[min].Pass = joblist[min].Stride
return joblist[min]
func LowestVal(theJobs slice) int {
lowest := 100
lowestId := 0
for i := 0; i < len(theJobs); i { //200 A
if i != lowestId amp;amp; theJobs[i].Pass == theJobs[lowestId].Pass {
if theJobs[i].Stride < theJobs[lowestId].Stride {
lowest = theJobs[i].Pass
lowestId = i
continue
}
}
if theJobs[i].Pass < lowest {
lowest = theJobs[i].Pass
lowestId = i
}
}
return lowestId
}
Результаты теста:
0s C(10ms)(1x) (p= 40,s= 40,t=250)
1ms A(10ms)(1x) (p= 100,s= 100,t=100)
2ms B(10ms)(1x) (p= 200,s= 200,t= 50)
3ms C( 9ms)(1x) (p= 80,s= 40,t=250)
4ms C( 8ms)(1x) (p= 120,s= 40,t=250)
5ms C( 7ms)(1x) (p= 160,s= 40,t=250)
6ms C( 6ms)(1x) (p= 200,s= 40,t=250)
7ms C( 5ms)(1x) (p= 240,s= 40,t=250)
8ms C( 4ms)(1x) (p= 280,s= 40,t=250)
9ms C( 3ms)(1x) (p= 320,s= 40,t=250)
10ms C( 2ms)(1x) (p= 360,s= 40,t=250)
11ms C( 1ms)(1x) (p= 400,s= 40,t=250)
12ms C( 0s)(1x) (p= 440,s= 40,t=250)
13ms C(-1ms)(1x) (p= 480,s= 40,t=250)
14ms Idle
Но так и должно быть :
0s C(10ms)(1x)
1ms A(10ms)(1x)
2ms B(10ms)(1x)
3ms C( 9ms)(1x)
4ms C( 8ms)(1x)
5ms A( 9ms)(1x)
6ms C( 7ms)(1x)
7ms C( 6ms)(1x)
8ms C( 5ms)(1x)
9ms A( 8ms)(1x)
10ms B( 9ms)(1x)
11ms C( 4ms)(1x)
12ms C( 3ms)(1x)
13ms A( 7ms)(1x)
14ms C( 2ms)(1x)
15ms C( 1ms)(1x)
16ms A( 6ms)(1x)
17ms B( 8ms)(1x)
18ms A( 5ms)(1x)
19ms A( 4ms)(1x)
20ms B( 7ms)(1x)
21ms A( 3ms)(1x)
22ms A( 2ms)(1x)
23ms B( 6ms)(1x)
24ms A( 1ms)(1x)
25ms B( 5ms)(1x)
26ms B( 4ms)(1x)
27ms B( 3ms)(1x)
28ms B( 2ms)(1x)
29ms B( 1ms)(1x)
30ms Idle
Комментарии:
1. Какова
k
функция в первом блоке кода? Что это за подписьgetNewJob
? Как вы печатаете результаты? Это действительно поможет, если вы опубликуете готовый код со своим вопросом.