static float MarkerMax(float[] a) { int i = 0, n = a.Length; float max = a[0]; /* Меняем размер массива, чтобы добавить * в конец элемент a[n], который будет являться * маркером */ Array.Resize(ref a, n+1); while (i < n) { max = a[i]; a[n] = max; i++; while (a[i] < max) i++; } return max; }