<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jayy Prajapat</title>
    <description>The latest articles on DEV Community by Jayy Prajapat (@jayy_prajapat).</description>
    <link>https://dev.to/jayy_prajapat</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4098328%2F2730de9c-8da9-4b55-9de9-60a679c9442a.jpg</url>
      <title>DEV Community: Jayy Prajapat</title>
      <link>https://dev.to/jayy_prajapat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jayy_prajapat"/>
    <language>en</language>
    <item>
      <title>Logarithms vs Exponentials: The Simple Idea Behind O(log n) and O(2ⁿ)</title>
      <dc:creator>Jayy Prajapat</dc:creator>
      <pubDate>Wed, 16 Sep 2026 02:50:57 +0000</pubDate>
      <link>https://dev.to/jayy_prajapat/logarithms-vs-exponentials-the-simple-idea-behind-olog-n-and-o2n-3455</link>
      <guid>https://dev.to/jayy_prajapat/logarithms-vs-exponentials-the-simple-idea-behind-olog-n-and-o2n-3455</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy4vtean5gf7iykax69qw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy4vtean5gf7iykax69qw.png" alt=" " width="800" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When learning DSA and Big-O, two mathematical concepts appear again and again:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logarithms&lt;/strong&gt; and &lt;strong&gt;exponentials&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They may sound complicated, but the basic idea is actually simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Logarithm asks: “How many times can I divide?”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Exponential asks: “How many times can I multiply?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you understand this, &lt;code&gt;O(log n)&lt;/code&gt; and &lt;code&gt;O(2ⁿ)&lt;/code&gt; become much easier to understand.&lt;/p&gt;




&lt;h2&gt;
  
  
  Exponential Growth
&lt;/h2&gt;

&lt;p&gt;Look at this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2¹ = 2
2² = 4
2³ = 8
2⁴ = 16
2⁵ = 32
2⁶ = 64
2⁷ = 128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every time &lt;code&gt;n&lt;/code&gt; increases by 1, the result doubles.&lt;/p&gt;

&lt;p&gt;That's exponential growth.&lt;/p&gt;

&lt;p&gt;The general form is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2ⁿ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2¹⁰ = 1,024
2²⁰ = 1,048,576
2³⁰ = 1,073,741,824
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It grows very quickly.&lt;/p&gt;

&lt;p&gt;This is important in DSA because some problems give you multiple choices at every step.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Take it
OR
Don't take it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One element → 2 choices&lt;br&gt;
Two elements → 4 choices&lt;br&gt;
Three elements → 8 choices&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;n&lt;/code&gt; elements:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2ⁿ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's why problems involving &lt;strong&gt;subsets, exhaustive choices, and some backtracking&lt;/strong&gt; can have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;O(2ⁿ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  So, What Is a Logarithm?
&lt;/h2&gt;

&lt;p&gt;A logarithm asks the opposite question.&lt;/p&gt;

&lt;p&gt;We know:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2³ = 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A logarithm asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What power of 2 gives me 8?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;log₂(8) = 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2³ = 8
      ↓
log₂(8) = 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Logarithm and exponential are inverse concepts.&lt;/p&gt;




&lt;h2&gt;
  
  
  The easiest way to understand &lt;code&gt;log n&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Think about repeatedly dividing by 2.&lt;/p&gt;

&lt;p&gt;Start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1,000,000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1,000,000
500,000
250,000
125,000
62,500
...
1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You only need around &lt;strong&gt;20 divisions&lt;/strong&gt; to go from 1,000,000 to 1.&lt;/p&gt;

&lt;p&gt;That's because:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;log₂(1,000,000) ≈ 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why logarithmic growth is so useful in algorithms.&lt;/p&gt;

&lt;p&gt;Even when &lt;code&gt;n&lt;/code&gt; becomes huge, the number of steps grows very slowly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Binary Search is the perfect example
&lt;/h2&gt;

&lt;p&gt;Imagine you have &lt;strong&gt;1,000,000 sorted numbers&lt;/strong&gt; and want to find one number.&lt;/p&gt;

&lt;p&gt;A normal search could check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 → 2 → 3 → 4 → 5 → ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's potentially:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;O(n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Binary Search does something different.&lt;/p&gt;

&lt;p&gt;It checks the middle and eliminates half of the remaining data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1,000,000
    ↓
500,000
    ↓
250,000
    ↓
125,000
    ↓
...
    ↓
1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the search space keeps getting divided by 2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Binary Search = O(log n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;code&gt;O(log n)&lt;/code&gt; vs &lt;code&gt;O(2ⁿ)&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is where the difference becomes really clear.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;n&lt;/th&gt;
&lt;th&gt;&lt;code&gt;log₂(n)&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;2ⁿ&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;~3&lt;/td&gt;
&lt;td&gt;1,024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;~4&lt;/td&gt;
&lt;td&gt;1,048,576&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;~5&lt;/td&gt;
&lt;td&gt;1,073,741,824&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;~5&lt;/td&gt;
&lt;td&gt;1,099,511,627,776&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;log n&lt;/code&gt; grows very slowly.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;2ⁿ&lt;/code&gt; grows extremely fast.&lt;/p&gt;

&lt;p&gt;That's why:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;O(log n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is commonly seen when we &lt;strong&gt;keep reducing the problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;While:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;O(2ⁿ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;often appears when we &lt;strong&gt;keep creating new possibilities&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  See it directly in code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Logarithmic
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every iteration cuts the problem in half.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Time: O(log n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Exponential
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;solve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nf"&gt;solve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;solve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each function call creates two more calls.&lt;/p&gt;

&lt;p&gt;The number of calls keeps multiplying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             solve
            /     \
        solve     solve
        /  \       /  \
      ...  ...   ...  ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the complexity is approximately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;O(2ⁿ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The DSA connection
&lt;/h2&gt;

&lt;p&gt;You don't need to remember complicated mathematical definitions.&lt;/p&gt;

&lt;p&gt;Just recognize the pattern.&lt;/p&gt;

&lt;p&gt;If you see:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repeatedly dividing the problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LOGARITHM → O(log n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multiple choices branching from each element&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EXPONENTIAL → O(2ⁿ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The mental model
&lt;/h2&gt;

&lt;p&gt;Remember these two lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LOGARITHM
“How many times can I divide?”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EXPONENTIAL
“How many times can I multiply?”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or even simpler:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Halving → &lt;code&gt;log n&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Branching → &lt;code&gt;2ⁿ&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the connection between logarithms, exponentials, and Big-O.&lt;/p&gt;

&lt;p&gt;Once you start seeing &lt;strong&gt;halving&lt;/strong&gt; and &lt;strong&gt;branching&lt;/strong&gt; in DSA problems, these complexities become much easier to recognize.&lt;/p&gt;

</description>
      <category>dsa</category>
      <category>ai</category>
      <category>programming</category>
      <category>algorithms</category>
    </item>
  </channel>
</rss>
