我有两个数组:-

int[] blueArray = new int[100];
int[] greenArray = new int[100];

greenarray和bluearray包含一个介于0和255之间的数字,用于指示每帧中各自颜色的强度。因此,blueArray[0]对于frame-1具有蓝色值,blueArray[99]对于frame-100具有蓝色值greenarray也有类似的排序。
我想找出前10帧的青色最高的帧因此,我正在寻找前10帧ID,其中包含蓝色+绿色的最高和。我可能不使用额外的数据结构,希望在o(n)时间内列出前10名。
我怎样才能做到这一点?

最佳答案

虽然不是很快,但实际上是o(n):

for (j = 0; j < 10; j++)
  max = j
  for (i = j + 1; i < 10; i++)
    if (blueArray[i] + greenArray[i] > blueArray[i] + greenArray[i])
      max = i;
  swap(blueArray[j], blueArray[max])
  swap(greenArray[j], greenArray[max])

关于arrays - 如何从未排序的蓝色和绿色int []数组中获取top10(蓝色+绿色)帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20788543/

10-10 11:55