2012-11-23 2 views
1

Скажем, у меня есть указатель 12 (12-й элемент), идущий слева направо, сверху вниз.Алгоритм для столбца, строки из индекса?

У меня есть массив [4] [4].

Что было бы самым быстрым способом вычислить индекс [3] [2] с учетом 1D-индекса 12? (1D-индекс начинается с 1).

Благодаря

+2

'Индекс [3] [2]' не эквивалентно 'индекса [12]'. '[3] [2]' охватывает 15 ячеек. –

ответ

1

Не знаю, если это самый быстрый, но это определенно просто:

Предполагая, что массив [х] [у]

ix = floor(index/y) 
iy = index % y 

Пример:

01 
23 
45 

x = 3 
y = 2 

index = 3 
ix = floor(3/2) = 1 
iy = 3 % 2 = 1  

index = 5 
ix = floor(5/2) = 2 
iy = 5 % 2 = 1 
+0

То, что мне нужно, спасибо! – jmasterx

+2

Я думаю, что вы сделали это наоборот. Остаток должен идти в 'iy'. –

+0

Да, в то время как общая идея была там, у меня было пару вещей, исправил ее, спасибо –

0

с учетом [x] [y] - это массив

использовать эту формулу

[index of 1d array]= (rnum * colsize) + (colnum + 1) 

так, для [3] [2] с colsize=4

= (3 * 4) + (2 + 1) 
= 15 
Смежные вопросы