mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-21 04:18:34 +08:00
382 lines
29 KiB
HTML
382 lines
29 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<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 name="viewport" content="width=device-width, initial-scale=1"/>
|
||
<title>Algorithms_in_C++: sorting/cycle_sort2.cpp File Reference</title>
|
||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="../../jquery.js"></script>
|
||
<script type="text/javascript" src="../../dynsections.js"></script>
|
||
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="../../resize.js"></script>
|
||
<script type="text/javascript" src="../../navtreedata.js"></script>
|
||
<script type="text/javascript" src="../../navtree.js"></script>
|
||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||
<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"],
|
||
});
|
||
</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>
|
||
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
<div id="titlearea">
|
||
<table cellspacing="0" cellpadding="0">
|
||
<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>
|
||
<div id="projectbrief">Set of algorithms implemented in C++.</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<!-- end header part -->
|
||
<!-- Generated by Doxygen 1.9.1 -->
|
||
<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-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 */
|
||
$(function() {
|
||
initMenu('../../',true,false,'search.php','Search');
|
||
$(document).ready(function() { init_search(); });
|
||
});
|
||
/* @license-end */</script>
|
||
<div id="main-nav"></div>
|
||
</div><!-- top -->
|
||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||
<div id="nav-tree">
|
||
<div id="nav-tree-contents">
|
||
<div id="nav-sync" class="sync"></div>
|
||
</div>
|
||
</div>
|
||
<div id="splitbar" style="-moz-user-select:none;"
|
||
class="ui-resizable-handle">
|
||
</div>
|
||
</div>
|
||
<script type="text/javascript">
|
||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||
$(document).ready(function(){initNavTree('da/d87/cycle__sort2_8cpp.html','../../'); initResizable(); });
|
||
/* @license-end */
|
||
</script>
|
||
<div id="doc-content">
|
||
<!-- window showing the filter options -->
|
||
<div id="MSearchSelectWindow"
|
||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||
</div>
|
||
|
||
<!-- iframe showing the search results (closed by default) -->
|
||
<div id="MSearchResultsWindow">
|
||
<iframe src="javascript:void(0)" frameborder="0"
|
||
name="MSearchResults" id="MSearchResults">
|
||
</iframe>
|
||
</div>
|
||
|
||
<div class="header">
|
||
<div class="summary">
|
||
<a href="#namespaces">Namespaces</a> |
|
||
<a href="#func-members">Functions</a> </div>
|
||
<div class="headertitle">
|
||
<div class="title">cycle_sort2.cpp File Reference</div> </div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
|
||
<p>Cycle sort is based on the idea that array to be sorted can be divided into cycles, which can individually be rotated to give a sorted result.
|
||
<a href="#details">More...</a></p>
|
||
<div class="textblock"><code>#include <iostream></code><br />
|
||
<code>#include <vector></code><br />
|
||
</div><div class="textblock"><div class="dynheader">
|
||
Include dependency graph for cycle_sort2.cpp:</div>
|
||
<div class="dyncontent">
|
||
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/de9/cycle__sort2_8cpp__incl.svg" width="170" 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><table class="memberdecls">
|
||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 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="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:d4/dfb/namespacecycle__sort"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfb/namespacecycle__sort.html">cycle_sort</a></td></tr>
|
||
<tr class="memdesc:d4/dfb/namespacecycle__sort"><td class="mdescLeft"> </td><td class="mdescRight">Functions for <a href="https://en.wikipedia.org/wiki/Cycle_sort">Cycle sort</a> 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>
|
||
Functions</h2></td></tr>
|
||
<tr class="memitem:af82f47c25011c54bd19ae9cd775e52c1"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
|
||
<tr class="memitem:af82f47c25011c54bd19ae9cd775e52c1"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d87/cycle__sort2_8cpp.html#af82f47c25011c54bd19ae9cd775e52c1">sorting::cycle_sort::swap</a> (T &a, T &b)</td></tr>
|
||
<tr class="memdesc:af82f47c25011c54bd19ae9cd775e52c1"><td class="mdescLeft"> </td><td class="mdescRight">Function to perform swapping. <a href="../../da/d87/cycle__sort2_8cpp.html#af82f47c25011c54bd19ae9cd775e52c1">More...</a><br /></td></tr>
|
||
<tr class="separator:af82f47c25011c54bd19ae9cd775e52c1"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a4c52eee647a17095f4893f6258893e15"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
|
||
<tr class="memitem:a4c52eee647a17095f4893f6258893e15"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d87/cycle__sort2_8cpp.html#a4c52eee647a17095f4893f6258893e15">sorting::cycle_sort::cycleSort</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< T > &arr, int n)</td></tr>
|
||
<tr class="memdesc:a4c52eee647a17095f4893f6258893e15"><td class="mdescLeft"> </td><td class="mdescRight">Function to perform cycle sort. <a href="../../da/d87/cycle__sort2_8cpp.html#a4c52eee647a17095f4893f6258893e15">More...</a><br /></td></tr>
|
||
<tr class="separator:a4c52eee647a17095f4893f6258893e15"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d87/cycle__sort2_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
|
||
<tr class="memdesc:aa8dca7b867074164d5f45b0f3851269d"><td class="mdescLeft"> </td><td class="mdescRight">Test implementations. <a href="../../da/d87/cycle__sort2_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">More...</a><br /></td></tr>
|
||
<tr class="separator:aa8dca7b867074164d5f45b0f3851269d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d87/cycle__sort2_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
|
||
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft"> </td><td class="mdescRight">Main function. <a href="../../da/d87/cycle__sort2_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">More...</a><br /></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>Cycle sort is based on the idea that array to be sorted can be divided into cycles, which can individually be rotated to give a sorted result. </p>
|
||
<p>It is an in-place, unstable sorting algorithm, a comparison sort that is theoretically optimal in terms of the total number of memory writes to the original array. Each value is either written zero times, if it’s already in its correct position, or written one time to its correct position.</p>
|
||
<p>The array is divided into cycles. We begin with the cycle containing the first element. Find the correct position of first element and place it at its correct position, say j. Now we consider the old value of arr[j] and find its correct position. This process is continued until all the elements of the current cycle are placed at their correct position, i.e. until the starting point of the cycle is reached.</p>
|
||
<dl class="section author"><dt>Author</dt><dd><a href="https://www.github.com/VasuSehgal123">Vasu Sehgal</a> </dd></dl>
|
||
<dl class="section see"><dt>See also</dt><dd>more on <a href="https://en.wikipedia.org/wiki/Cycle_sort">Cycle sort</a> </dd></dl>
|
||
</div><h2 class="groupheader">Function Documentation</h2>
|
||
<a id="a4c52eee647a17095f4893f6258893e15"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a4c52eee647a17095f4893f6258893e15">◆ </a></span>cycleSort()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename T > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void sorting::cycle_sort::cycleSort </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< T > & </td>
|
||
<td class="paramname"><em>arr</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>n</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Function to perform cycle sort. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">arr</td><td>vector of elements. </td></tr>
|
||
<tr><td class="paramname">n</td><td>size of the vector </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div>
|
||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
|
||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">int</span> writes = 0; <span class="comment">// count number of memory writes</span></div>
|
||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div>
|
||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// traverse array elements and put it at it's correct positon</span></div>
|
||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div>
|
||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> cycle_start = 0; cycle_start <= n - 2; cycle_start++) {</div>
|
||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
|
||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  T item = arr[cycle_start]; <span class="comment">// initialize item as starting point</span></div>
|
||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div>
|
||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> pos = cycle_start; <span class="comment">// Find position where we put the item.</span></div>
|
||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = cycle_start + 1; i < n; i++) <span class="comment">// we basically count all smaller elements</span></div>
|
||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span> (arr[i] < item) <span class="comment">// on the right side of the item.</span></div>
|
||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  pos++;</div>
|
||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div>
|
||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span> (pos == cycle_start)</div>
|
||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">continue</span>; <span class="comment">// If item is already in correct position</span></div>
|
||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div>
|
||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">while</span> (item == arr[pos])</div>
|
||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  pos += 1; <span class="comment">// ignore all duplicate elements</span></div>
|
||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div>
|
||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
|
||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (pos != cycle_start) {</div>
|
||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">swap</a>(item, arr[pos]); <span class="comment">// place the item at it's correct position</span></div>
|
||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  writes++;</div>
|
||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div>
|
||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div>
|
||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">while</span> (pos != cycle_start) { <span class="comment">// Rotate rest of the cycle</span></div>
|
||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  pos = cycle_start;</div>
|
||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div>
|
||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = cycle_start + 1; i < n; i++) <span class="comment">// Find position where we put the element</span></div>
|
||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span> (arr[i] < item)</div>
|
||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  pos += 1;</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> (item == arr[pos])</div>
|
||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  pos += 1; <span class="comment">// ignore all duplicate elements</span></div>
|
||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
|
||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div>
|
||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span> (item != arr[pos]) {</div>
|
||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">swap</a>(item, arr[pos]); <span class="comment">// place the item at it's correct position</span></div>
|
||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  writes++;</div>
|
||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</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>  </div>
|
||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Number of memory writes or swaps</span></div>
|
||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// cout << writes << endl ;</span></div>
|
||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div>
|
||
<div class="ttc" id="aswap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a></div><div class="ttdeci">T swap(T... args)</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="../../da/d87/cycle__sort2_8cpp_a4c52eee647a17095f4893f6258893e15_cgraph.svg" width="482" height="95"><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="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">◆ </a></span>main()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int main </td>
|
||
<td>(</td>
|
||
<td class="paramtype">void </td>
|
||
<td class="paramname"></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<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="l00142"></a><span class="lineno"> 142</span> {</div>
|
||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="../../da/d87/cycle__sort2_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// execute the tests</span></div>
|
||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> 0;</div>
|
||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div>
|
||
<div class="ttc" id="acycle__sort2_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../da/d87/cycle__sort2_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> cycle_sort2.cpp:114</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="../../da/d87/cycle__sort2_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="154" height="38"><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="af82f47c25011c54bd19ae9cd775e52c1"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af82f47c25011c54bd19ae9cd775e52c1">◆ </a></span>swap()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<div class="memtemplate">
|
||
template<typename T > </div>
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void sorting::cycle_sort::swap </td>
|
||
<td>(</td>
|
||
<td class="paramtype">T & </td>
|
||
<td class="paramname"><em>a</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">T & </td>
|
||
<td class="paramname"><em>b</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Function to perform swapping. </p>
|
||
<dl class="params"><dt>Parameters</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">a</td><td>element </td></tr>
|
||
<tr><td class="paramname">b</td><td>element </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||
<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div>
|
||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  T temp = a;</div>
|
||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  a = b;</div>
|
||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  b = temp;</div>
|
||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div>
|
||
</div><!-- fragment -->
|
||
</div>
|
||
</div>
|
||
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">◆ </a></span>test()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="mlabels">
|
||
<tr>
|
||
<td class="mlabels-left">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">static void test </td>
|
||
<td>(</td>
|
||
<td class="paramname"></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
<td class="mlabels-right">
|
||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>Test implementations. </p>
|
||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div>
|
||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div>
|
||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// example 1: vector of int</span></div>
|
||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> size1 = 8;</div>
|
||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Test 1: After sort-\n"</span>;</div>
|
||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<int></a> arr1 = { 1, 8, 3, 9, 10, 10, 2, 4 };</div>
|
||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="../../de/d07/cycle__sort_8cpp.html#ad0cfe2e54b1d3f9d0ca648265d917c6a">sorting::cycle_sort::cycleSort</a>(arr1, size1);</div>
|
||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < size1; i++)</div>
|
||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << arr1[i] << <span class="stringliteral">" "</span>;</div>
|
||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>  </div>
|
||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// example 2: vector of double</span></div>
|
||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> size2 = 8;</div>
|
||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Test 2: After sort-\n"</span>;</div>
|
||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<double></a> arr2 = {11.82, 45.10, 33.22, 33.18, 1.9, 1.2, 61.77, 79.6};</div>
|
||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="../../de/d07/cycle__sort_8cpp.html#ad0cfe2e54b1d3f9d0ca648265d917c6a">sorting::cycle_sort::cycleSort</a>(arr2, size2);</div>
|
||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
|
||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < size2; i++)</div>
|
||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << arr2[i] << <span class="stringliteral">" "</span>;</div>
|
||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</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="l00134"></a><span class="lineno"> 134</span>  </div>
|
||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div>
|
||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</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 class="ttc" id="acycle__sort_8cpp_html_ad0cfe2e54b1d3f9d0ca648265d917c6a"><div class="ttname"><a href="../../de/d07/cycle__sort_8cpp.html#ad0cfe2e54b1d3f9d0ca648265d917c6a">sorting::cycle_sort::cycleSort</a></div><div class="ttdeci">std::vector< T > cycleSort(const std::vector< T > &in_arr)</div><div class="ttdoc">The main function implements cycleSort.</div><div class="ttdef"><b>Definition:</b> cycle_sort.cpp:39</div></div>
|
||
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector< int ></a></div></div>
|
||
</div><!-- fragment -->
|
||
</div>
|
||
</div>
|
||
</div><!-- contents -->
|
||
</div><!-- doc-content -->
|
||
<!-- start footer part -->
|
||
<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="../../da/d87/cycle__sort2_8cpp.html">cycle_sort2.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>
|
||
</ul>
|
||
</div>
|
||
</body>
|
||
</html>
|