C# jak przeszukiwać tablice 2 albo 3 wymiarową

0

Witam, czy jest jakaś analogiczna funkcja do IndexOf(Array, Object) dla tablic wielowymiarowych, podająca współrzędne danego elementu albo coś w tym rodzaju.
Z góry dzięki

0

Tablice 2-wymiarową(i większe) możesz zapisać w postaci tablicy 1-wymiarowej; chodzi o to aby wyliczać odpowiednio indeksacje.
W pamięci komputera nie ma czegoś takiego jak tablice wielowymiarowe - wszystko jest jednowymiarowe.

0

Możesz również posortować taką tablicę "QuickSort" a potem przeszukiwać algorytmem "wyszukiwania binarnego".

0

@Krwawy Pomidor: To jest C#, a nie C, nie można sobie na tablicy dwuwymiarowej zrobić indeksowania jednym wymiarem i liczyć, że to zadziała.

Masz tutaj metodę rozszerzającą tablicę o nazwie CoordinatesOf, która zwraca współrzędne punktu w postaci obiektu Tuple.

public static Tuple<int, int> CoordinatesOf<T>(this T[,] matrix, T value)
{
    int w = matrix.GetLength(0); // width
    int h = matrix.GetLength(1); // height

    for (int x = 0; x < w; ++x)
    {
        for (int y = 0; y < h; ++y)
        {
            if (matrix[x, y].Equals(value))
                return Tuple.Create(x, y);
        }
    }

    return Tuple.Create(-1, -1);
}

Źrodło: http://stackoverflow.com/a/3261006

0

Ok, wielkie DZIĘKI :) spróbuje co da się zrobić. Myślałem nad tym żeby po prostu przekonwertować tę tablice na kilka tablic jednowymiarowych, ale to by skomplikowało trochę algorytm, dlatego szukałem innej możliwości. Teraz jakoś dam radę jeszcze raz dzięx.

2

To jest C#, a nie C, nie można sobie na tablicy dwuwymiarowej zrobić indeksowania jednym wymiarem i liczyć, że to zadziała.

Ale można zrobić tablicę jednowymiarową i indeksować [y*kolumn + x].

1 użytkowników online, w tym zalogowanych: 0, gości: 1