Time complexity of a binary search

AI Thread Summary
Binary search operates by halving the number of elements in a sorted array with each iteration, leading to a time complexity of O(log n). The discussion clarifies that while O(log_2 n) is accurate, O(log n) is commonly used because it abstracts away the base of the logarithm, which only introduces a constant factor. The relationship between logarithms of different bases is highlighted, specifically that log_2 x can be expressed in terms of natural logarithm (ln) as log_2 x = log x / log 2. This constant factor is irrelevant in Big O notation, which focuses on growth rates rather than exact values. The conversation also touches on variations in logarithm notation across different fields, noting that in computer science, log typically refers to base 2, while in mathematics, it often refers to the natural logarithm.
YoungPhysicist
Insights Author
Messages
350
Reaction score
203
Binary search works by eliminating half of the objects in a sorted array every time,so shouldn’t it’s time complexity being ##O(\log_2 n)## instead of ##O(\log n)##?
 
Technology news on Phys.org
Where is the difference?
 
mfb said:
Where is the difference?
I do get that when the input tends to infinity,the difference between ##\log x## and ##\log_2 x## becomes smaller and smaller,but why don’t they just use ##O(\log_2 x)##?
 
Because a multiplying constant is of no importance in the O notation.
 
Young physicist said:
I do get that when the input tends to infinity,the difference between ##\log x## and ##\log_2 x## becomes smaller and smaller,but why don’t they just use ##O(\log_2 x)##?
It isn't about limits as n tends to infinity. Do you know how to express the ##\log_b x##, where ##b## is any base, in terms of ##\log x##?
 
Ibix said:
Do you know how to express the logbxlogb⁡x\log_b x, where bbb is any base, in terms of logxlog⁡x\log x?
Yes, I do.
$$\log_2 x = \frac{\log x}{\log 2}$$
 
So ln(x) and log2 only differ by a constant (ln(2)). A constant doesn't matter. ##O(\log n) = O(5\log n) = O(46342\log n)##
 
  • Like
Likes QuantumQuest and YoungPhysicist
mfb said:
So ln(x) and log2 only differ by a constant (ln(2)). A constant doesn't matter. ##O(\log n) = O(5\log n) = O(46342\log n)##
Ohh~~problem solved!

Edit:so this ##\log x## means ##\log_e x## rather than ##\log_{10} x## ?
 
Last edited:
Young physicist said:
Ohh~~problem solved!

Edit:so this ##\log x## means ##\log_e x## rather than ##\log_{10} x## ?
It doesn't matter. All bases do the same thing - you just multiply by a constant to change base, and you discard that constant in this case.
 
  • Like
Likes QuantumQuest and YoungPhysicist
  • #10
Ibix said:
It doesn't matter. All bases do the same thing - you just multiply by a constant to change base, and you discard that constant in this case.
Yeah.Just making sure the ln(x) posted by @mfb isn’t an accident.
 
  • #11
Young physicist said:
Binary search works by eliminating half of the objects in a sorted array every time,so shouldn’t it’s time complexity being ##O(\log_2 n)## instead of ##O(\log n)##?
In computer science books ##\log(n)## is usually taken to mean ##\log_2(n)##.

In the calculus textbooks I learned from, which was a while ago, ##\log(x)## meant ##\log_{10}(x)##, the so-called common logarithm. The notation ##\ln(x)## was reserved for the natural logarithm, or ##\log_e##. I'm told that more modern calculus textbooks treat ##\log## and ##\ln## as synonyms.
 
  • Like
Likes QuantumQuest
  • #12
Young physicist said:
Yeah.Just making sure the ln(x) posted by @mfb isn’t an accident.
I used ln(x) to avoid ambiguity.

Computer science read log(x) as base 2, mathematics and most of physics will see it as base e, chemistry will see it as base 10, ...
 
  • #13
mfb said:
Computer science read log(x) as base 2, mathematics and most of physics will see it as base e, chemistry will see it as base 10, ...
woah!:eek:
 
Back
Top