2014-02-05 82 views
0

我真的需要一些帮助解决这个问题。我试图用Java代码编写一个函数,但是我被卡住了,我不知道如何继续。我有这个数据包含1行(区)和7列(医院)。该地区有一个百分比,这个人会在医院1结束了,另一个%的将在H2等最终的数据看起来是这样的:如何从阵列中获得第二高值,第三高值等

hospital h1 h2 h3 ... 
area 
a1  11 45 3 ... 

我曾经在一个双阵列保存的数据包含7个值。我有这个随机生成器fcn,它随机选择我们所在的数组中的哪个索引值。如果这个随机生成器选择指数= 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) { 
      ...... 
     } 

} 

} 

这是我卡住。我现在用第一种算法对数据进行排序,但从逻辑上讲,我不知道如何包含所有的情况。

+1

你为什么不简单地排序呢? O.o –

回答

0

您可以使用Arrays.sort(vector)进行排序而不是执行。

而且你总是可以通过像分别 vector[vector.length-2]vector[vector.length-3]索引访问第二和第三值。

0

没有理由每次选择医院时对数组进行排序,这看起来就像您正在尝试的那样。

如果您在程序开始时对数组进行一次排序,那么它非常容易。将索引设置为随机选择,如果索引不空闲,则减少索引,如果索引不空闲,则减少索引,重复,直到找到空闲或用完选项。由于数组总是处于排序顺序,因此无论您身处何处,您总是知道下一个最佳选择是数组中的前一个值。 Hth

+0

我以为我在代码的开头对它进行排序?...这是以返回向量结束的for循环...但是,如果我已经对它进行了排序45 11 3,那么如果rndValue是例如11即我的指数,那么我将如何减少它。我会如何写它? – user2481390

+0

也许我误解了你的代码。假设你已经按照哪个答案是“最好的”排序了数组,下一个最好的结果总是离最好的结果有一个元素。所以如果你不能返回你正在考虑的索引,你想要考虑下一个或上一个元素(只是取决于你在开始排序数组的方向,只要你一致就可以)。重复这个过程,你会发现最好的结果,或没有有效的结果。 – user3109924

+0

你能将原始作业发布在我可以阅读的地方吗?我不知道我明白你想要做什么。不想通过假设我给出不好的建议。 – user3109924