Złożoność czasu dla algorytmu
Czy mam poprawne wyjaśnienie przy obliczaniu złożoności czasowej następującego algorytmu?
HashSet, moduleMarksheetFiles, jest używany do dodawania plików zawierających określoną nazwę modułu.
for (File file: marksheetFiles){
while(csvReader.readRecord()){
String moduleName = csvReader.get(ModuleName);
if (moduleName.equals(module)){
moduleMarksheetFiles.add(file);
}
}
}
Niech m będzie liczbą plików
Niech k będzie średnią liczbą rekordów na plik.Ponieważ każdy plik jest dodawany tylko raz, ponieważ HashSet nie zezwala na duplikaty. HashSet.add () to średnio O (1) i O (n) dla najgorszego przypadku.Wyszukiwanie rekordu z określoną nazwą modułu polega na porównaniu każdego rekordu w pliku z nazwą modułu, wykona kroki O (n).Dlatego średnia złożoność czasu byłaby następująca: O ((m * k) ^ 2).
Czy to jest poprawne?
Jak obliczyłbyś najgorszy przypadek?
Dzięki.
PS. To nie jest praca domowa, tylko analiza algorytmu mojego systemu w celu oceny wydajności.