Complexidade de tempo para um algoritmo

Estou correto em minha explicação ao calcular a complexidade de tempo do seguinte algoritmo?

Um HashSet, moduleMarksheetFiles, está sendo usado para incluir os arquivos que contêm o moduleName especificado.

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

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

Seja m o número de arquivos

Seja k o número médio de registros por arquivo.Como cada arquivo é adicionado apenas uma vez, porque o HashSet não permite duplicatas. HashSet.add () é O (1) em média e O (n) para o pior caso.A pesquisa por um registro com o moduleName especificado envolve a comparação de cada registro no arquivo para o moduleName, executará as etapas O (n).

Portanto, a complexidade de tempo médio seria: O ((m * k) ^ 2).

Isso está correto?

Além disso, como você calcularia o pior caso?

Obrigado.

PS. Não é tarefa de casa, apenas analisando o algoritmo do meu sistema para avaliar o desempenho.

questionAnswers(1)

yourAnswerToTheQuestion