Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Three way partitioning of an array around a given range using Python
Given an array and the range of the array [startval, endval]. Array is divided by three parts.
All elements smaller than startval come first.
All elements in range startval to endval come next.
All elements greater than endval appear in the end.
Let?s say we have the following input ?
<span class="pln">A </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">14</span><span class="pun">,</span><span class="pln"> </span><span class="lit">51</span><span class="pun">,</span><span class="pln"> </span><span class="lit">12</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">54</span><span class="pun">,</span><span class="pln"> </span><span class="lit">20</span><span class="pun">,</span><span class="pln"> </span><span class="lit">87</span><span class="pun">,</span><span class="pln"> </span><span class="lit">98</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">32</span><span class="pun">]</span><span class="pln"> startval </span><span class="pun">=</span><span class="pln"> </span><span class="lit">14</span><span class="pun">,</span><span class="pln"> endval </span><span class="pun">=</span><span class="pln"> </span><span class="lit">54</span>
The output should be ?
A = [1, 12, 4, 2, 3, 1, 14, 51, 20, 32,54, 87, 98]
Three-way partitioning of an array around a given range with List Comprehension
In this example, we will see how to three-way partition an array around a given range ?
Example
<div class="execute"></div><div class="code-mirror language-python" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">def</span> <span class="token function">partition_array</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">,</span> lowVal<span class="token punctuation">,</span> highVal<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># Separate input list in three parts</span> my_first <span class="token operator">=</span> <span class="token punctuation">[</span> num <span class="token keyword">for</span> num <span class="token keyword">in</span> <span class="token builtin">input</span> <span class="token keyword">if</span> num<span class="token operator"><</span>lowVal <span class="token punctuation">]</span> my_second <span class="token operator">=</span> <span class="token punctuation">[</span> num <span class="token keyword">for</span> num <span class="token keyword">in</span> <span class="token builtin">input</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>num<span class="token operator">>=</span>lowVal <span class="token keyword">and</span> num<span class="token operator"><=</span>highVal<span class="token punctuation">)</span> <span class="token punctuation">]</span> my_third <span class="token operator">=</span> <span class="token punctuation">[</span> num <span class="token keyword">for</span> num <span class="token keyword">in</span> <span class="token builtin">input</span> <span class="token keyword">if</span> num<span class="token operator">></span>highVal <span class="token punctuation">]</span> <span class="token comment"># Concatenate all the three parts</span> <span class="token keyword">print</span><span class="token punctuation">(</span>my_first <span class="token operator">+</span> my_second <span class="token operator">+</span> my_third<span class="token punctuation">)</span> <span class="token comment"># Driver program</span> <span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span> my_input <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">140</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">540</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">870</span><span class="token punctuation">,</span> <span class="token number">980</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">320</span><span class="token punctuation">]</span> my_lowVal <span class="token operator">=</span> <span class="token number">140</span> my_highVal <span class="token operator">=</span> <span class="token number">200</span> partition_array<span class="token punctuation">(</span>my_input<span class="token punctuation">,</span> my_lowVal<span class="token punctuation">,</span> my_highVal<span class="token punctuation">)</span> </div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
[10, 50, 40, 20, 30, 10, 140, 200, 200, 540, 870, 980, 320]
Three-way partitioning of an array around a given range with while loop
In this example, we will see how to three-way partition an array around a given range with while loop ?
Example
<div class="execute"></div><div class="code-mirror language-python" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">def</span> <span class="token function">partitionFunc</span><span class="token punctuation">(</span>my_input<span class="token punctuation">,</span> n<span class="token punctuation">,</span> lowVal<span class="token punctuation">,</span> highVal<span class="token punctuation">)</span><span class="token punctuation">:</span> begn <span class="token operator">=</span> <span class="token number">0</span> end <span class="token operator">=</span> n <span class="token operator">-</span> <span class="token number">1</span> i <span class="token operator">=</span> <span class="token number">0</span> <span class="token comment"># Looping</span> <span class="token keyword">while</span> i <span class="token operator"><=</span> end<span class="token punctuation">:</span> <span class="token keyword">if</span> my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator"><</span> lowVal<span class="token punctuation">:</span> my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> my_input<span class="token punctuation">[</span>begn<span class="token punctuation">]</span> <span class="token operator">=</span> my_input<span class="token punctuation">[</span>begn<span class="token punctuation">]</span><span class="token punctuation">,</span> my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span> i <span class="token operator">+=</span> <span class="token number">1</span> begn <span class="token operator">+=</span> <span class="token number">1</span> <span class="token keyword">elif</span> my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">></span> highVal<span class="token punctuation">:</span> my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> my_input<span class="token punctuation">[</span>end<span class="token punctuation">]</span> <span class="token operator">=</span> my_input<span class="token punctuation">[</span>end<span class="token punctuation">]</span><span class="token punctuation">,</span> my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span> end <span class="token operator">-=</span> <span class="token number">1</span> <span class="token keyword">else</span><span class="token punctuation">:</span> i<span class="token operator">+=</span><span class="token number">1</span> <span class="token comment"># Driver code</span> <span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span> my_input <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">51</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">54</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">87</span><span class="token punctuation">,</span> <span class="token number">98</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">]</span> n <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>my_input<span class="token punctuation">)</span> partitionFunc<span class="token punctuation">(</span>my_input<span class="token punctuation">,</span> n<span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">54</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span>my_input<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> end <span class="token operator">=</span> <span class="token string">" "</span><span class="token punctuation">)</span> </div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
1 12 4 2 1 3 54 20 32 51 14 98 87
Advertisements
