Complejidad del tiempo para un algoritmo

¿Tengo razón en mi explicación al calcular la complejidad del tiempo del siguiente algoritmo?

Se está utilizando un HashSet, moduleMarksheetFiles, para agregar los archivos que contienen el nombre de módulo especificado.

<code>for (File file: marksheetFiles){
     while(csvReader.readRecord()){
         String moduleName = csvReader.get(ModuleName);

         if (moduleName.equals(module)){
               moduleMarksheetFiles.add(file);
         }
     }
 }
</code>

Sea m el número de archivos

Sea k el número promedio de registros por archivo.Como cada archivo se agrega solo una vez porque HashSet no permite duplicados. HashSet.add () es O (1) en promedio y O (n) para el peor de los casos.La búsqueda de un registro con el nombre de módulo especificado implica la comparación de cada registro en el archivo con el nombre de módulo, tomará los pasos O (n).

Por lo tanto, la complejidad del tiempo promedio sería: O ((m * k) ^ 2).

¿Es esto correcto?

Además, ¿cómo calcularías el peor de los casos?

Gracias.

PD. No es tarea, solo analizar el algoritmo de mi sistema para evaluar el rendimiento.

Respuestas a la pregunta(1)

Su respuesta a la pregunta