Как исправить функцию, которая проверяет наименьшее число в срезе для планирования шага с помощью Golang?

# #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 ? Как вы печатаете результаты? Это действительно поможет, если вы опубликуете готовый код со своим вопросом.