mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-25 22:32:24 +08:00
Documentation for 341ed50da8
This commit is contained in:
@@ -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++
|
||||
 <span id="projectnumber">1.0.0</span>
|
||||
<div id="projectname">Algorithms_in_C++<span id="projectnumber"> 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&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&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&dn=gpl-2.0.txt GPL-v2 */
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&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&dn=gpl-2.0.txt GPL-v2 */
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&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> |
|
||||
<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 <cassert></code><br />
|
||||
<code>#include <cstdint></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">  </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  </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"> </td><td class="mdescRight">Sorting algorithms. <br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:d9/d13/namespaceinversion"><td class="memItemLeft" align="right" valign="top">  </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  </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"> </td><td class="mdescRight">Functions for counting inversions using Merge Sort algorithm. <br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </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<typename T > </td></tr>
|
||||
<tr class="memitem:aad643c14734394e784a75169cb58132f"><td class="memTemplItemLeft" align="right" valign="top">uint32_t </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"> </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> > <code>a[j]</code> and i < j</p>
|
||||
<p>Time Complexity --> <code>O(n.log n)</code></p>
|
||||
<p>Space Complexity --> <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> > <code>a[j]</code> and i < j</p>
|
||||
<p >Time Complexity --> <code>O(n.log n)</code></p>
|
||||
<p >Space Complexity --> <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">◆ </a></span>countInversion()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -192,7 +191,7 @@ template<class T > </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<int>, input for counting inversions </td></tr>
|
||||
@@ -201,12 +200,12 @@ template<class T > </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>  {</div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<T></a> temp;</div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  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>  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>  <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> }</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<T></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">◆ </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>  {</div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <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>  <span class="comment">// body(); // test your own array</span></div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</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">◆ </a></span>merge()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -301,8 +300,8 @@ template<typename T > </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<typename T > </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>  {</div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  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 --> index of left sub-array */</span></div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  uint32_t j = mid + 1; <span class="comment">/* j --> index for right sub-array */</span></div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  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 --> index for resultant array temp */</span></div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  uint32_t inv_count = 0; <span class="comment">// inversion count</span></div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">while</span> ((i <= mid) && (j <= right)) {</div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (arr[i] <= arr[j]) {</div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  temp[k++] = arr[i++];</div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  temp[k++] = arr[j++];</div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  inv_count +=</div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  (mid - i +</div>
|
||||
<div class="line"><a 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 name="l00099"></a><span class="lineno"> 99</span>  }</div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div>
|
||||
<div class="line"><a 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 name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">while</span> (i <= mid) {</div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  temp[k++] = arr[i++];</div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">while</span> (j <= right) {</div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  temp[k++] = arr[j++];</div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Copy temp[] to arr[]</span></div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">for</span> (k = left; k <= <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>  arr[k] = temp[k];</div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> inv_count;</div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</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 --> 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 --> 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 --> 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 <= mid) && (j <= right)) {</div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">if</span> (arr[i] <= 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 <= 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 <= 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 <= <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">◆ </a></span>mergeSort()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -388,7 +387,7 @@ template<typename T > </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<typename T > </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>  {</div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  uint32_t mid = 0, inv_count = 0;</div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span> (right > left) {</div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// midpoint to split the array</span></div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  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>  <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>  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>  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>  </div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// inversions in the merge step</span></div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  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>  }</div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> inv_count;</div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</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 > 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">◆ </a></span>show()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -460,18 +459,18 @@ template<typename T > </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>  {</div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Printing array: \n"</span>;</div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span> (uint32_t i = 0; i < array_size; i++) {</div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">" "</span> << arr[i];</div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"\n"</span>;</div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</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> << <span class="stringliteral">"Printing array: \n"</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 < 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> << <span class="stringliteral">" "</span> << 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> << <span class="stringliteral">"\n"</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">◆ </a></span>test()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -496,39 +495,39 @@ template<typename T > </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>  {</div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// Test 1</span></div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint64_t></a> arr1 = {</div>
|
||||
<div class="line"><a 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 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 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 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 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 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 name="l00203"></a><span class="lineno"> 203</span>  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>  uint32_t inv_count1 = 4950;</div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  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>  assert(inv_count1 == result1);</div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// Test 2</span></div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<int></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>  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>  uint32_t inv_count2 = 20;</div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  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>  assert(inv_count2 == result2);</div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Test 3</span></div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<double></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>  2.9, 5.4, 7.7, 88.9, 12.4};</div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  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>  uint32_t inv_count3 = 21;</div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  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>  assert(inv_count3 == result3);</div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// Test 4</span></div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<char></a> arr4 = {<span class="charliteral">'a'</span>, <span class="charliteral">'b'</span>, <span class="charliteral">'c'</span>, <span class="charliteral">'d'</span>, <span class="charliteral">'e'</span>};</div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  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>  uint32_t inv_count4 = 0;</div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  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>  assert(inv_count4 == result4);</div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</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<uint64_t></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<int></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<double></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<char></a> arr4 = {<span class="charliteral">'a'</span>, <span class="charliteral">'b'</span>, <span class="charliteral">'c'</span>, <span class="charliteral">'d'</span>, <span class="charliteral">'e'</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>
|
||||
|
||||
Reference in New Issue
Block a user