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.
<code>for (File file: marksheetFiles){ while(csvReader.readRecord()){ String moduleName = csvReader.get(ModuleName); if (moduleName.equals(module)){ moduleMarksheetFiles.add(file); } } } </code>
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.