Poszukuję metody znalezienia maksymalnej i minimalnej wartości dwuwymiarowej tablicy 2D w C++. Jestem świadomy std::max_element()
i std::min_element()
, ale wydaje się, że działają tylko w jednowymiarowych tablicach.Najlepsza metoda wyszukiwania punktów extrema w tablicy 2D w C++?
Tablica 2D mogą być zadeklarowane i inicjowany przez:
int temp[5][5];
for(int x = 0; x < 5; x++)
{
for(int y = 0; y < 5; y++)
{
temp[x][y] = some_random_number;
}
}
prosta metoda może być coś jak:
int min = high_number;
int max = low_number;
for(int x = 0; x < 5; x++)
{
for(int y = 0; y < 5; y++)
{
if(temp[x][y] < min)
{
min = temp[x][y];
}
if(temp[x][y] > max)
{
max = temp[x][y];
}
}
}
Ale to nie wydaje się bardzo zoptymalizowany. Czy ktoś może udzielić porady lub zaproponować lepszy pomysł?
Nie optymalizacji zrobić prosty i głupi wdrożenia, który jest łatwy do debugowania. Optymalizuj, gdy staje się wąskim gardłem podczas profilowania. – Ryp
Nie ma lepszego rozwiązania (może być trochę cukru oszczędzającego niektóre pisanie) –
Jedynym sposobem na zoptymalizowanie znalezienia wartości min/max jest utrzymanie tablicy uporządkowanej według wiersza lub kolumny. Dodałoby to złożoności do wstawiania/wypełniania tablicy, ale można znaleźć min/max w O (n), gdzie n jest liczbą wierszy lub kolumn. – mstbaum