Как это сделать в коде ...
Это будет обрабатывать увеличение и уменьшение:
int changeTot = 0;
int lastVal = 0;
bool first = true;
foreach (int val in myDict.Values)
{
if (!first) changeTot += val - lastVal;
lastVal = val;
first = false;
}
double avg = (double)changeTot / myDict.Count;
Конечно, это O (n), поскольку вы проходите массив только один раз.
Если ваши значения только увеличиваются или только уменьшаются
Вы можете использовать немного Linq:
double avg = (double)(myDict.Last().Value - myDict.First().Value) / myDict.Count();
Это будет O (1)