Algoritmo para encontrar números altos / bajos con como máximo 1.5n comparaciones

He estado pensando en esta pregunta de tarea por un momento ahora. Dada una matriz numérica de tamaño n, diseñe un algoritmo que encuentre los valores altos y bajos con como máximo 1.5n comparaciones.

Mi primer intento fue

int high=0
int low= Number.MaxValue //problem statement is unclear on what type of number to use
Number numList[0 . . n] //number array, assuming unsorted

for (i=0, i < n, i++) {
  if (numList[i] > high)
    high = numList[i]

  else if (numList[i] < low)
    low = numList[i]

}

Mi problema es que cada iteración del ciclo tiene una de tres posibilidades:

e encuentra el valor @low: se realizó 1 comparaciónhigh value se encuentra - 2 comparaciones hechasneither is found - 2 comparaciones hechas

or lo tanto, para un recorrido completo de la matriz, se puede realizar un máximo de 2n comparaciones, lo que está muy lejos del requisito máximo de problema de 1.5n comparaciones.