Dor*_*rki 0 c# arrays algorithm integer
假设我有两个带有5个单元格的排序数组:
数组中的数字在2到14之间(包括2到14,它们是整数)
现在,当最低的数组为:[0,100]时,我需要给每个数组一个等级:
[2,2,2,2,2],最高为[14,14,14,14,14]
现在的事情是:索引很重要,因此例如,如果我们看一下这些数组:
1)[2,2,2,2,10]
2)[8,8,8,8,9]
因此,第一个比第二个更好,并且得分会更高。
并且如果索引中有一个领带(从右到左),例如:
1)[3,4,5,10,13]
2)[3,4,7,10,13]
因此索引编号:3和4相同,但是由于7高于5。因此,在这种情况下,第二个数组的得分更高。
我在数学上苦苦挣扎,我想提高效率,现在我可以做类似的事情:
2 ^ array [i]但效率不高,所以我设法做的主要事情是
double rank = 0;
for (int i = 0; i < 5; i++)
{
rank += (double)array[i] / 14 + i;
}
Run Code Online (Sandbox Code Playgroud)
因为如果array [i]可以在2到14之间,那么1/7 <= array [i] / 14 <= 1,所以我认为如果每次迭代都添加+ i,那么下一个迭代将大于所有以前的那些,但这是错误的。
我很乐意在这里提供一些帮助。
您实际上是在描述以13为底的数字。每个“数字”(数组位置)代表13个不同的有序值之一。
您可以通过将数组转换为5位以13为底的值来计算排名:
1)或提高到Array.Length-数组索引,具体取决于数组的哪一侧应是最低有效的。