Chociaż przyjęta odpowiedź jest całkiem dobra, nadal nie dotyka prawdziwego powodu, dla którego .O(n)=O(2n)
Notacja Big-O opisuje skalowalność
Zasadniczo notacja Big-O nie jest opisem czasu działania algorytmu. Nie jest też opisem liczby kroków, linii kodu ani porównań, jakie wykonuje algorytm. Jest to najbardziej przydatne, gdy jest używane do opisania, jak algorytm skaluje się z liczbą danych wejściowych.
Weźmy na przykład wyszukiwanie binarne. Biorąc pod uwagę posortowaną listę, jak znaleźć w niej dowolną wartość? Możesz zacząć od środka. Ponieważ lista jest posortowana, środkowa wartość powie ci, na której połowie znajduje się twoja wartość docelowa. Zatem lista, którą musisz przeszukać, jest teraz podzielona na pół. Można to zastosować rekurencyjnie, a następnie przejść na środek nowej listy i tak dalej, aż rozmiar listy wyniesie 1 i nie znajdziesz wartości (lub nie ma jej na liście). Podwojenie wielkości listy dodaje tylko jeden dodatkowy krok do algorytmu, który jest relacją logarytmiczną. Zatem ten algorytm to . Logarytm to podstawa 2, ale to nie ma znaczenia - rdzeń związku polega na tym, że pomnożenie listy przez stałą wartość dodaje tylko stałą wartość do czasu.O(logn)
Porównaj standardowe wyszukiwanie z nieposortowaną listą - jedynym sposobem na znalezienie wartości w tym przypadku jest sprawdzenie każdej z nich. Scenariusz najgorszego przypadku (co sugeruje konkretnie Big-O) jest taki, że twoja wartość znajduje się na samym końcu, co oznacza, że dla listy rozmiarów musisz sprawdzić wartości. Podwojenie wielkości listy podwaja liczbę operacji, które musisz sprawdzić, co jest relacją liniową. . Ale nawet gdybyś musiał wykonać dwie operacje na każdej wartości, pewne przetwarzanie, na przykład, relacja liniowa nadal obowiązuje. po prostu nie jest użyteczny jako deskryptor, ponieważ opisałby dokładnie taką samą skalowalność jak .nnO(n)O(2n)O(n)
Rozumiem, że wiele z tych odpowiedzi w zasadzie mówi ci, abyś sam doszedł do tego wniosku, czytając definicję Big-O. Ale to intuicyjne zrozumienie zajęło mi sporo czasu, aby owinąć głowę i dlatego przedstawiam to tak jasno, jak to tylko możliwe.