Сопоставление большого набора элементов с меньшим набором маркеров положения

#c# #algorithm

#c# #алгоритм

Вопрос:

У меня есть набор изображений, упорядоченных в последовательности, по которым пользователь может перемещаться. Поскольку изображений может быть любое количество, для облегчения навигации в пользовательском интерфейсе имеется полоса миниатюр из 10 изображений (фиксированное число), которая сопоставляет исходный набор изображений (порядковые номера, скажем, Img_1 с Img_569, с равным интервалом (насколько это возможно) от Thumb_1 до Thumb_10 (что соответствует 10 миниатюрам). Thumb_1 должен соответствовать Img_1, а Thumb_10 должен соответствовать Img_569. Каков наилучший способ выполнить сопоставление.

Ответ №1:

 int imgnum = 569;
int thumbmap [10];
for (int i = 0; i < 10; i  ) thumbmap [i] = imgnum * i / 9;
  

thumbmap [i] — это индекс изображения для миниатюры i.
я

Ответ №2:

Я бы просто выполнил простое сопоставление, если бы не было веской причины не делать этого

 int imageCount = 569;
int thumbCount = 10;
float stepSize = (float)imageCount/(float)thumbCount; // use a float to avoid error accumulation

for(int i =0; i < thumbCount; i  )
{
    thumbs[i] = images[(int)(i*stepSize)];
}