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.