<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[When More Code Is Less]]></title><description><![CDATA[When More Code Is Less]]></description><link>https://code-efficiency-time-complexity.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 16:52:30 GMT</lastBuildDate><atom:link href="https://code-efficiency-time-complexity.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[When More Is Less: Why 100 Lines Can Beat 2]]></title><description><![CDATA[📌Introduction:
Do you think that is it always the length of code which determines how efficient it is? Let us bust that myth with an example which explains how a well thought and logical lengthy code can beat a traditional, 2 liner code in terms of ...]]></description><link>https://code-efficiency-time-complexity.hashnode.dev/when-more-is-less-why-100-lines-can-beat-2</link><guid isPermaLink="true">https://code-efficiency-time-complexity.hashnode.dev/when-more-is-less-why-100-lines-can-beat-2</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[DSA]]></category><category><![CDATA[Code Quality]]></category><category><![CDATA[coding tips]]></category><dc:creator><![CDATA[VAIDIK DUBEY]]></dc:creator><pubDate>Mon, 05 May 2025 07:14:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1746424747572/d1e25769-de14-4d0c-ab44-553b5ec7279f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">📌Introduction:</h2>
<p>Do you think that is it always the length of code which determines how efficient it is? Let us bust that myth with an example which explains how a well thought and logical lengthy code can beat a traditional, 2 liner code in terms of efficiency.</p>
<h2 id="heading-problem">⚙️Problem:</h2>
<p>You are given 9 balls and one of those balls is heavier than the rest of the group. Your task is to find out the odd ball in the least possible comparisons.</p>
<pre><code class="lang-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;

<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">int</span> balls[<span class="hljs-number">9</span>] = {<span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>, <span class="hljs-number">8</span>};

    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
};
</code></pre>
<h2 id="heading-solution-1-short-yet-inefficient">🐢Solution 1 (Short yet Inefficient):</h2>
<p>The traditional way to solve this problem is by comparing the weights of all the balls starting from the first ball and finding out which ball has a higher weight.</p>
<p>The below code snippet demonstrates this solution:</p>
<pre><code class="lang-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;

<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">int</span> balls[<span class="hljs-number">9</span>] = {<span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>, <span class="hljs-number">8</span>};

    <span class="hljs-keyword">int</span> heavyBall= arr[<span class="hljs-number">0</span>];
    <span class="hljs-keyword">int</span> heavyBallIndex;

    <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i &lt; <span class="hljs-number">9</span>; i++) {
        <span class="hljs-keyword">if</span>(balls[i] &gt; heavyBall) {
            heavyBall = balls[i];
            heavyBallIndex = i;
        }
    }

    <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; heavyBall &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; heavyBallIndex &lt;&lt; <span class="hljs-built_in">endl</span>;

    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
};
</code></pre>
<p>As you can see this is a small code with just few lines to write but when we dig deep into the working of this code, you’ll find out that in the worst case scenario this code will iterate through all the balls to return the answer, resulting in a total of <strong>8</strong> comparisons.</p>
<h2 id="heading-solution-2-long-yet-efficient">🐇Solution 2 (Long yet Efficient):</h2>
<p>One other solution for finding the heavy ball is with a lengthy code and well thought logic, which is listed below:</p>
<ul>
<li><p>To find the heavier ball we can divide the 9 balls into 3 groups (G1, G2 and G3) with 3 balls in each group.</p>
</li>
<li><p>Then we can determine the sum of all the balls within each group.</p>
</li>
<li><p>Next, compare the sum in group 1 (G1) and group 2 (G2).</p>
<ul>
<li>If G1 = G2, this means that there is no heavy ball in these groups and hence our heavy ball is in G3. In this way with just 1 comparison, we’ve eliminated 6 balls out of the total 9 balls.</li>
</ul>
</li>
<li><p>Now, we can compare the remaining 3 balls from group 3 (G3)</p>
</li>
</ul>
<pre><code class="lang-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;iostream&gt;</span></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;

<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">int</span> balls[<span class="hljs-number">9</span>] = {<span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>, <span class="hljs-number">8</span>};

     <span class="hljs-keyword">int</span> g1 = balls[<span class="hljs-number">0</span>] + balls[<span class="hljs-number">1</span>] + balls[<span class="hljs-number">2</span>];
     <span class="hljs-keyword">int</span> g2 = balls[<span class="hljs-number">3</span>] + balls[<span class="hljs-number">4</span>] + balls[<span class="hljs-number">5</span>];
     <span class="hljs-keyword">int</span> g3 = balls[<span class="hljs-number">6</span>] + balls[<span class="hljs-number">7</span>] + balls[<span class="hljs-number">8</span>];

    <span class="hljs-keyword">if</span>(g1 == g2) {
        <span class="hljs-keyword">if</span>(balls[<span class="hljs-number">6</span>] &gt; balls[<span class="hljs-number">7</span>])
        {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">6</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">7</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
        <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(balls[<span class="hljs-number">7</span>] &gt; balls[<span class="hljs-number">6</span>])
        {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">7</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">8</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
        <span class="hljs-keyword">else</span> {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">8</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">9</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
    }
    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (g1 &gt; g2) {
        <span class="hljs-keyword">if</span>(balls[<span class="hljs-number">0</span>] &gt; balls[<span class="hljs-number">1</span>])
        {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">0</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">1</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
        <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(balls[<span class="hljs-number">1</span>] &gt; balls[<span class="hljs-number">0</span>])
        {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">1</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">2</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
        <span class="hljs-keyword">else</span> {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">2</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">3</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
    }
    <span class="hljs-keyword">else</span> {
        <span class="hljs-keyword">if</span>(balls[<span class="hljs-number">3</span>] &gt; balls[<span class="hljs-number">4</span>])
        {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">3</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">4</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
        <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(balls[<span class="hljs-number">4</span>] &gt; balls[<span class="hljs-number">3</span>])
        {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">4</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">5</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
        <span class="hljs-keyword">else</span> {
            <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Heavy ball is: "</span> &lt;&lt; balls[<span class="hljs-number">5</span>] &lt;&lt; <span class="hljs-string">" and is found at index: "</span> &lt;&lt; <span class="hljs-number">6</span> &lt;&lt; <span class="hljs-built_in">endl</span>;
        }
    }

    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
};
</code></pre>
<p>If you pay attention and count the number of comparisons in the above code you’ll find that the code only has 3 comparisons at max for any given case.</p>
<h2 id="heading-conclusion-length-efficiency">📝Conclusion (Length <strong>≠ Efficiency):</strong></h2>
<p>This example explains that how a code which appears to be lengthy (for our example, 52 lines) and time consuming might actually be very efficient and faster that a code which appears to be smaller (for our example, 20 lines).</p>
]]></content:encoded></item></channel></rss>