Мне действительно нужна помощь с этой проблемой. Я пытаюсь написать функцию в Java-коде, но я застрял, и я не знаю, как продолжить. У меня есть эти данные, содержащие 1 строку (площадь) и 7 столбцов (больницы). Для области есть процент, что этот человек будет в конечном итоге в больнице 1, еще один процент будет в конечном итоге на h2 и т.д. Данные выглядит примерно так:Как получить второе наивысшее значение из массива, третье самое высокое значение и т. Д.
hospital h1 h2 h3 ...
area
a1 11 45 3 ...
Я сохраненные данные в двойном массиве содержащий 7 значений. У меня есть случайный генератор fcn, который случайным образом выбирает значение индекса, где в массиве мы находимся. Если этот случайный генератор выбирает, например, index = 0, что будет означать 11%, если он случайным образом выбирает индекс = 2, который будет означать 3% и т. д.
Проблема в том, что после того, как я это сделал, я хочу проверить, свободен ли этот госпиталь или нет. Если он неактивен, я хочу вернуть случайно выбранное значение целочисленного индекса. Если это не праздно, я хочу выбрать следующую больницу со вторым самым высоким процентом, и если эта больница простаивает, верните это значение индекса int, в противном случае продолжайте и проверьте третий самый высокий процент и выполните еще одну проверку и так далее. Если все больницы не праздны, верните случайно выбранное значение.
Это то, что я сделал до сих пор:
double vector[] = new double[distrToEachHosp.length]();
//start by setting the contents to index
for(int index=0; index<vector.length; index++){
vector[index] = index;
}
for(int i=0; i <= vector.length; i++){
for(int x=1; x <= vector.length; x++){
if (distrToEachHosp[vektor[x]] > distrToEachHosp[vektor[x+1]]){ //compare content that corresponds to index
//move index
int temp = vector[x];
vector[x] = vector[x+1];
vector[x+1] = temp;
}
}
}
return vektor;
int rndValue = randomGenerator(distrToEachHosp);
for(int i=0; i<vector.length; i++){
if(hospital.get(i).namn == hospitalNameVariable[rndValue]){ //hospitalNameVariable is a variable containing the names of the hospitals
if(hospital.get(i).idle()>0){
return rndValue;
} else {
if(vector[0] >= rndValue) {
return vector[0];
} else if(vektor[1] >= slumpVärde) {
......
}
}
}
И это где я застрял. Теперь я получаю некоторую сортировку данных с первым алгоритмом, но логически я не знаю, как включить все случаи.
Почему бы вам просто не отсортировать его ?! O.o –