Documentation for 341ed50da8

This commit is contained in:
github-actions
2021-09-03 19:56:17 +00:00
parent 52d0c55145
commit 08e8eb037e
3432 changed files with 71392 additions and 72953 deletions

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: sorting/count_inversions.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d2/d26/count__inversions_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d2/d26/count__inversions_8cpp.html','.
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">count_inversions.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">count_inversions.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort">Merge Sort</a>
<p>Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort" target="_blank">Merge Sort</a>
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
@@ -111,16 +110,16 @@ Include dependency graph for count_inversions.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d5/d91/namespacesorting"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html">sorting</a></td></tr>
<tr class="memitem:d5/d91/namespacesorting"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d91/namespacesorting.html">sorting</a></td></tr>
<tr class="memdesc:d5/d91/namespacesorting"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorting algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d9/d13/namespaceinversion"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d13/namespaceinversion.html">inversion</a></td></tr>
<tr class="memitem:d9/d13/namespaceinversion"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d13/namespaceinversion.html">inversion</a></td></tr>
<tr class="memdesc:d9/d13/namespaceinversion"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for counting inversions using Merge Sort algorithm. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aad643c14734394e784a75169cb58132f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aad643c14734394e784a75169cb58132f"><td class="memTemplItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d2/d26/count__inversions_8cpp.html#aad643c14734394e784a75169cb58132f">sorting::inversion::merge</a> (T *arr, T *temp, uint32_t left, uint32_t mid, uint32_t right)</td></tr>
@@ -146,12 +145,12 @@ Functions</h2></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort">Merge Sort</a> </p>
<p>Program to count the number of inversions in an array using merge-sort.</p>
<p>The count of inversions help to determine how close the array is to be sorted in ASCENDING order.</p>
<p>two elements a[i] and a[j] form an inversion if <code>a[i]</code> &gt; <code>a[j]</code> and i &lt; j</p>
<p>Time Complexity --&gt; <code>O(n.log n)</code></p>
<p>Space Complexity --&gt; <code>O(n)</code> ; additional array <code>temp[1..n]</code> </p>
<div class="textblock"><p >Counting Inversions using <a href="https://en.wikipedia.org/wiki/Merge_sort" target="_blank">Merge Sort</a> </p>
<p >Program to count the number of inversions in an array using merge-sort.</p>
<p >The count of inversions help to determine how close the array is to be sorted in ASCENDING order.</p>
<p >two elements a[i] and a[j] form an inversion if <code>a[i]</code> &gt; <code>a[j]</code> and i &lt; j</p>
<p >Time Complexity --&gt; <code>O(n.log n)</code></p>
<p >Space Complexity --&gt; <code>O(n)</code> ; additional array <code>temp[1..n]</code> </p>
<h3><a class="anchor" id="autotoc_md95"></a>
Algorithm</h3>
<ol type="1">
@@ -161,9 +160,9 @@ Algorithm</h3>
<li>The base case of recursion is when there is only one element in the given half.</li>
<li>Print the answer</li>
</ol>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/rakshitraj">Rakshit Raj</a> </dd></dl>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/rakshitraj" target="_blank">Rakshit Raj</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a3332498eabf6579ef059c0d0e9f4ec80"></a>
<a id="a3332498eabf6579ef059c0d0e9f4ec80" name="a3332498eabf6579ef059c0d0e9f4ec80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3332498eabf6579ef059c0d0e9f4ec80">&#9670;&nbsp;</a></span>countInversion()</h2>
<div class="memitem">
@@ -192,7 +191,7 @@ template&lt;class T &gt; </div>
</div><div class="memdoc">
<p>Function <a class="el" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80" title="Function countInversion() returns the number of inversion present in the input array....">countInversion()</a> returns the number of inversion present in the input array. Inversions are an estimate of how close or far off the array is to being sorted. </p>
<p>Number of inversions in a sorted array is 0. Number of inversion in an array[1...n] sorted in non-ascending order is n(n-1)/2, since each pair of elements contitute an inversion.</p>
<p >Number of inversions in a sorted array is 0. Number of inversion in an array[1...n] sorted in non-ascending order is n(n-1)/2, since each pair of elements contitute an inversion.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>- array, data member of std::vector&lt;int&gt;, input for counting inversions </td></tr>
@@ -201,12 +200,12 @@ template&lt;class T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of inversions in input array, sorts the array </dd></dl>
<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> temp;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; temp.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(size);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; temp.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(size, 0);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), 0, size - 1);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> {</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;T&gt;</a> temp;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> temp.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(size);</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> temp.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(size, 0);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), 0, size - 1);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span>}</div>
<div class="ttc" id="aassign_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/assign.html">std::vector::assign</a></div><div class="ttdeci">T assign(T... args)</div></div>
<div class="ttc" id="adata_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/data.html">std::vector::data</a></div><div class="ttdeci">T data(T... args)</div></div>
<div class="ttc" id="agroup__sorting_html_gab6b14fea48d9841e29b9fc26be6e05d7"><div class="ttname"><a href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a></div><div class="ttdeci">void mergeSort(int *arr, int l, int r)</div><div class="ttdef"><b>Definition:</b> merge_sort.cpp:71</div></div>
@@ -221,7 +220,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -239,11 +238,11 @@ Here is the call graph for this function:</div>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="../../d2/d26/count__inversions_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// Run test implementations</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// body(); // test your own array</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> {</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// Run test implementations</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="comment">// body(); // test your own array</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span>}</div>
<div class="ttc" id="acount__inversions_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d2/d26/count__inversions_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Test implementations.</div><div class="ttdef"><b>Definition:</b> count_inversions.cpp:194</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
@@ -254,7 +253,7 @@ Here is the call graph for this function:</div>
</div>
</div>
<a id="aad643c14734394e784a75169cb58132f"></a>
<a id="aad643c14734394e784a75169cb58132f" name="aad643c14734394e784a75169cb58132f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad643c14734394e784a75169cb58132f">&#9670;&nbsp;</a></span>merge()</h2>
<div class="memitem">
@@ -301,8 +300,8 @@ template&lt;typename T &gt; </div>
</div><div class="memdoc">
<p>Function to merge two sub-arrays. </p>
<p><a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function is called from <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> to merge the array after it split for sorting by the <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> funtion.</p>
<p>In this case the merge fuction will also count and return inversions detected when merging the sub arrays.</p>
<p ><a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function is called from <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> to merge the array after it split for sorting by the <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> funtion.</p>
<p >In this case the merge fuction will also count and return inversions detected when merging the sub arrays.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>input array, data-menber of vector </td></tr>
@@ -314,40 +313,40 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of inversions found in merge step </dd></dl>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; uint32_t i = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* i --&gt; index of left sub-array */</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; uint32_t j = mid + 1; <span class="comment">/* j --&gt; index for right sub-array */</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; uint32_t k = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* k --&gt; index for resultant array temp */</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; uint32_t inv_count = 0; <span class="comment">// inversion count</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">while</span> ((i &lt;= mid) &amp;&amp; (j &lt;= right)) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (arr[i] &lt;= arr[j]) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; temp[k++] = arr[i++];</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; temp[k++] = arr[j++];</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; inv_count +=</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; (mid - i +</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 1); <span class="comment">// tricky; may vary depending on selection of sub-array</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">// Add remaining elements from the larger subarray to the end of temp</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">while</span> (i &lt;= mid) {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; temp[k++] = arr[i++];</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">while</span> (j &lt;= right) {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; temp[k++] = arr[j++];</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// Copy temp[] to arr[]</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (k = left; k &lt;= <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a>; k++) {</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; arr[k] = temp[k];</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> uint32_t i = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* i --&gt; index of left sub-array */</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> uint32_t j = mid + 1; <span class="comment">/* j --&gt; index for right sub-array */</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> uint32_t k = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>; <span class="comment">/* k --&gt; index for resultant array temp */</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> uint32_t inv_count = 0; <span class="comment">// inversion count</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">while</span> ((i &lt;= mid) &amp;&amp; (j &lt;= right)) {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">if</span> (arr[i] &lt;= arr[j]) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> temp[k++] = arr[i++];</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> temp[k++] = arr[j++];</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> inv_count +=</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> (mid - i +</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> 1); <span class="comment">// tricky; may vary depending on selection of sub-array</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> }</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// Add remaining elements from the larger subarray to the end of temp</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">while</span> (i &lt;= mid) {</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> temp[k++] = arr[i++];</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">while</span> (j &lt;= right) {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> temp[k++] = arr[j++];</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Copy temp[] to arr[]</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">for</span> (k = left; k &lt;= <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a>; k++) {</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> arr[k] = temp[k];</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span>}</div>
<div class="ttc" id="aleft_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::left</a></div><div class="ttdeci">T left(T... args)</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae97a486e14101c4822ea8dc47f0d1661"></a>
<a id="ae97a486e14101c4822ea8dc47f0d1661" name="ae97a486e14101c4822ea8dc47f0d1661"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae97a486e14101c4822ea8dc47f0d1661">&#9670;&nbsp;</a></span>mergeSort()</h2>
<div class="memitem">
@@ -388,7 +387,7 @@ template&lt;typename T &gt; </div>
</div><div class="memdoc">
<p>Implement merge Sort and count inverions while merging. </p>
<p>The <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> function implements Merge Sort, a Divide and conquer algorithm, it divides the input array into two halves and calls itself for each sub-array and then calls the <a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function to merge the two halves.</p>
<p >The <a class="el" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort()</a> function implements Merge Sort, a Divide and conquer algorithm, it divides the input array into two halves and calls itself for each sub-array and then calls the <a class="el" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge()</a> function to merge the two halves.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arr</td><td>- array to be sorted </td></tr>
@@ -399,31 +398,31 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of inversions in array </dd></dl>
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; uint32_t mid = 0, inv_count = 0;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (right &gt; left) {</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// midpoint to split the array</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; mid = (<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a> + <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>) / 2;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Add inversions in left and right sub-arrays</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; inv_count += <a class="code" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, left, mid); <span class="comment">// left sub-array</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; inv_count += <a class="code" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, mid + 1, right);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// inversions in the merge step</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; inv_count += <a class="code" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(arr, temp, left, mid, right);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> uint32_t mid = 0, inv_count = 0;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (right &gt; left) {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// midpoint to split the array</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> mid = (<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">right</a> + <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a>) / 2;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// Add inversions in left and right sub-arrays</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> inv_count += <a class="code hl_function" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, left, mid); <span class="comment">// left sub-array</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> inv_count += <a class="code hl_function" href="../../d5/d4c/group__sorting.html#gab6b14fea48d9841e29b9fc26be6e05d7">mergeSort</a>(arr, temp, mid + 1, right);</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// inversions in the merge step</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> inv_count += <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(arr, temp, left, mid, right);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> inv_count;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>}</div>
<div class="ttc" id="agroup__sorting_html_ga460c61cd948203b4816bef2accb3fc73"><div class="ttname"><a href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a></div><div class="ttdeci">void merge(int *arr, int l, int m, int r)</div><div class="ttdef"><b>Definition:</b> merge_sort.cpp:33</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d26/count__inversions_8cpp_ae97a486e14101c4822ea8dc47f0d1661_cgraph.svg" width="416" height="88"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d26/count__inversions_8cpp_ae97a486e14101c4822ea8dc47f0d1661_cgraph.svg" width="416" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a851ca6a0391d14fb49a97d55e4377497"></a>
<a id="a851ca6a0391d14fb49a97d55e4377497" name="a851ca6a0391d14fb49a97d55e4377497"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a851ca6a0391d14fb49a97d55e4377497">&#9670;&nbsp;</a></span>show()</h2>
<div class="memitem">
@@ -460,18 +459,18 @@ template&lt;typename T &gt; </div>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Printing array: \n&quot;</span>;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; array_size; i++) {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; arr[i];</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Printing array: \n&quot;</span>;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; array_size; i++) {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; arr[i];</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> }</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
@@ -496,39 +495,39 @@ template&lt;typename T &gt; </div>
<p>Test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// Test 1</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr1 = {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; uint32_t size1 = arr1.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; uint32_t inv_count1 = 4950;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; uint32_t result1 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr1.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size1);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; assert(inv_count1 == result1);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// Test 2</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> arr2 = {22, 66, 75, 23, 11, 87, 2, 44, 98, 43};</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; uint32_t size2 = arr2.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; uint32_t inv_count2 = 20;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; uint32_t result2 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr2.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size2);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; assert(inv_count2 == result2);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Test 3</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;double&gt;</a> arr3 = {33.1, 45.2, 65.4, 76.5, 1.0,</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; 2.9, 5.4, 7.7, 88.9, 12.4};</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; uint32_t size3 = arr3.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; uint32_t inv_count3 = 21;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; uint32_t result3 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr3.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size3);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; assert(inv_count3 == result3);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Test 4</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;char&gt;</a> arr4 = {<span class="charliteral">&#39;a&#39;</span>, <span class="charliteral">&#39;b&#39;</span>, <span class="charliteral">&#39;c&#39;</span>, <span class="charliteral">&#39;d&#39;</span>, <span class="charliteral">&#39;e&#39;</span>};</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; uint32_t size4 = arr4.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; uint32_t inv_count4 = 0;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; uint32_t result4 = <a class="code" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr4.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size4);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; assert(inv_count4 == result4);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> {</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// Test 1</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint64_t&gt;</a> arr1 = {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84,</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> uint32_t size1 = arr1.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> uint32_t inv_count1 = 4950;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> uint32_t result1 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr1.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size1);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> assert(inv_count1 == result1);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="comment">// Test 2</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> arr2 = {22, 66, 75, 23, 11, 87, 2, 44, 98, 43};</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> uint32_t size2 = arr2.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> uint32_t inv_count2 = 20;</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> uint32_t result2 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr2.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size2);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> assert(inv_count2 == result2);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Test 3</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;double&gt;</a> arr3 = {33.1, 45.2, 65.4, 76.5, 1.0,</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> 2.9, 5.4, 7.7, 88.9, 12.4};</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> uint32_t size3 = arr3.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> uint32_t inv_count3 = 21;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> uint32_t result3 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr3.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size3);</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> assert(inv_count3 == result3);</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// Test 4</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;char&gt;</a> arr4 = {<span class="charliteral">&#39;a&#39;</span>, <span class="charliteral">&#39;b&#39;</span>, <span class="charliteral">&#39;c&#39;</span>, <span class="charliteral">&#39;d&#39;</span>, <span class="charliteral">&#39;e&#39;</span>};</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> uint32_t size4 = arr4.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> uint32_t inv_count4 = 0;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> uint32_t result4 = <a class="code hl_function" href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a>(arr4.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), size4);</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> assert(inv_count4 == result4);</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span>}</div>
<div class="ttc" id="acount__inversions_8cpp_html_a3332498eabf6579ef059c0d0e9f4ec80"><div class="ttname"><a href="../../d2/d26/count__inversions_8cpp.html#a3332498eabf6579ef059c0d0e9f4ec80">sorting::inversion::countInversion</a></div><div class="ttdeci">uint32_t countInversion(T *arr, const uint32_t size)</div><div class="ttdoc">Function countInversion() returns the number of inversion present in the input array....</div><div class="ttdef"><b>Definition:</b> count_inversions.cpp:164</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
@@ -546,7 +545,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_bb1b521853a9c46347182a9d10420771.html">sorting</a></li><li class="navelem"><a class="el" href="../../d2/d26/count__inversions_8cpp.html">count_inversions.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>