no estoy seguro de lo que tenía en mente.
Si solo desea encontrar la hora número uno, y no tiene garantías sobre si la matriz está ordenada, entonces no creo que pueda vencer la búsqueda lineal. En promedio, deberá buscar a la mitad de la matriz antes de encontrar el valor, es decir, el tiempo de ejecución esperado O (N); al ordenar, debe tocar cada valor al menos una vez y probablemente más que eso, es decir, el tiempo de ejecución esperado O (N log N).
Pero si necesita encontrar valores múltiples, entonces el tiempo dedicado a ordenarlo vale la pena rápidamente. Con una matriz ordenada, puede realizar búsquedas binarias en el tiempo O (log N), de modo que con seguridad en la tercera búsqueda estará adelante si invirtió el tiempo para ordenar.
Puede hacerlo aún mejor si se le permite construir diferentes estructuras de datos para ayudar con el problema. Podría construir algún tipo de índice, como una tabla hash; pero la estructura de datos del campeón para este tipo de problema probablemente sería algún tipo de estructura de árbol. Luego puede insertar nuevos valores en el árbol más rápido de lo que podría agregar nuevos valores y volver a ordenar la matriz, y la búsqueda todavía será O (log N) para encontrar cualquier valor. Hay diferentes tipos de árboles disponibles: árbol binario, árbol B, trie, etc.
Pero como dijo @Hot Licks, una tabla hash a menudo se usa para este tipo de cosas, y es bastante barato actualizar: solo añada un valor en la matriz principal y actualice la tabla hash para que apunte al nuevo valor. Y una tabla hash está muy cerca del tiempo O (1), que no se puede superar. (Una tabla hash es O (1) si no hay colisiones hash, asumiendo un buen algoritmo hash y una tabla hash suficientemente grande no habrá casi colisiones. Creo que se podría decir que una tabla hash es O (N) donde N es el número promedio de colisiones hash por "cubo". Si me equivoco al respecto espero ser corregido muy rápidamente; esto es StackOverflow!)
En general, para buscar un gran conjunto de cosas, uno utiliza algún tipo de tabla hash. –
[¿Qué es más rápido, búsqueda Hash o búsqueda binaria?] (Http://stackoverflow.com/questions/360040/which-is-faster-hash-lookup-or-binary-search) – Josh
@Josh - Pregunta engañosa. La búsqueda binaria es más rápida si todo está bien ordenado y nunca se modificará el conjunto para buscar. Pero esa no es la vida real. En la vida real, la tabla hash casi siempre gana. –