tablica: przekształca indeks tablicy jednowymiarowej na indeks wektorowy tablicy wielowymiarowej

To będzie długie pytanie, weź głęboki oddech przed lekturą.

Chcę zrozumieć, jaki byłby najszybszy algorytm do konwersji indeksu tablicy jednowymiarowej na indeks wektorowy tablicy wielowymiarowej.

Przejdźmy do przykładu, aby zrozumieć, dlaczego go potrzebuję:

Mam dwuwymiarową tablicę: Array [i1] [i2]

i1 przebiega od i1_b = 0 do i1_e = 2

i2 działa od i2_b = 0 do i2_e = 1

Tak więc ta tablica jest wyprowadzana do pliku wiersz po wierszu:

Tablica [0] [0]

Array [0] [1]

Array [0] [2]

Tablica [1] [0]

Tablica [1] [1]

Tablica [1] [2]

Teraz czytam plik wiersz po wierszu, a indeks k to numer czytanej linii.

Przeczytałem pierwszą linię, która jest tablicą [0] [0] i k = 0

Czytam drugi wiersz, który jest Array [0] [1] i k = 1

...

Można zauważyć, że k będzie przebiegać od k_b = 0 do k_e = 5 i

k = 0 będzie odpowiadać i1 = 0, i2 = 0

k = 1 będzie odpowiadać i1 = 0, i2 = 1

...

Problem: Więc moim problemem jest jak przekonwertować k na i1 i i2 w najszybszy możliwy sposób? (Nie potrzebuję tego podczas czytania pliku, ale później w moim programie)

W tym przykładzie byłoby jedno z rozwiązań

i1 = k / (i1e - i1_b + 1);

i2 = k% (i1e - i1_b + 1);

Pytanie 1: Czy jest to najszybsze możliwe rozwiązanie pod względem cykli i czasu komputera?

DOBRZE. Pytanie 2: W jaki sposób możemy uogólnić ten algorytm na tablice wielowymiarowe?

Tablica [i1] [i2] [i3] [i4]

i1 = k / (i1e - i1_b + 1);

i2 = k% (i1e - i1_b + 1);

i3 = i2 / (i1e - i1_b + 1);

i4 = i2% (i1e - i1_b + 1);

Pytanie 3: Czy jest to najszybszy sposób, aby to zrobić?

Pytanie 4: pytanie pokrewne brzmiałoby, jakie jest opóźnienie dla podziału modularnego, dzielenie liczb całkowitych, dodawanie liczb całkowitych i mnożenie liczb całkowitych? Jeśli te liczby zależą od architektury, daj mi znać.

Z góry dziękuję!

P.S. Ktoś może myśleć o tym problemie jako najszybszy algorytm konwertujący sekundy na dni-godziny-minuty-sekundy.

questionAnswers(2)

yourAnswerToTheQuestion