Czas O(n)
jest prawdziwy, nawet jeśli występują zduplikowane elementy. Powinieneś zapoznać się z big-oh notation.
W najgorszym przypadku rozważ tę tablicę: 1, 1, 1, 1, ..., 1, 1, 2
. Wyszukiwanie 2
będzie wymagało dokładnie n
porównań, jeśli zaczniesz od pierwszego elementu, więc posiadanie duplikatów w ogóle nie pomogło. Gdybyś szukał 1
, znalazłbyś to w jednym porównaniu, ale są wejścia różnych elementów, dla których możesz również znaleźć element w jednym porównaniu, jeśli masz szczęście, więc duplikaty naprawdę nie Znacznie dużo, z wyjątkiem tego, że masz większe szanse na szczęście i znalezienie elementu docelowego w mniejszej liczbie kroków. Jednak nadal będzie to O(n)
.
Prawie zawsze są najlepsze przypadki i najgorsze przypadki. Praktyczna wydajność większości algorytmów zawsze zależy od danych wejściowych, notacja big-oh daje tylko niejasne pojęcie o tym, jak będzie działał algorytm. Nie oznacza to, że notacja asymptotyczna jest bezużyteczna, tylko że nie zawsze jest całkowicie dokładna, ponieważ istnieją stałe stałe, które powodują różnicę w praktyce.
Jeśli masz wątpliwości co do wydajności, uruchom własne testy porównawcze.
Liczba porównań zależy od tego, czego szukasz. Czy to konkretny element? Pierwszy element, który jest duplikatem? Pełna posortowana wersja tablicy? – Pops
Witamy w SO! Pozwól, że dam ci pierwszy upominek na temat używania pracy domowej i napisania czystego, zrozumiałego pytania (otrzymujemy niefortunną ilość _plzsendtehcodez_). – Pops