mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-31 01:02:46 +08:00
Documentation for 53a6c16730
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.2"/>
|
||||
<meta name="generator" content="Doxygen 1.9.3"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Algorithms_in_C++: sorting Namespace Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -30,8 +30,8 @@ MathJax.Hub.Config({
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">Algorithms_in_C++<span id="projectnumber"> 1.0.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">Set of algorithms implemented in C++.</div>
|
||||
@@ -41,7 +41,7 @@ MathJax.Hub.Config({
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.2 -->
|
||||
<!-- Generated by Doxygen 1.9.3 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
@@ -259,19 +259,19 @@ template<class T > </div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>the index of most suitable position of val. </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> {</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> (high <= low) {</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> (val > arr[low]) ? (low + 1) : low;</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> int64_t mid = low + (high - low) / 2;</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">if</span> (arr[mid] > val) {</div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">binary_search</a>(arr, val, low, mid - 1);</div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arr[mid] < val) {</div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">binary_search</a>(arr, val, mid + 1, high);</div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> mid + 1;</div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 63</span> {</div>
|
||||
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> (high <= low) {</div>
|
||||
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> (val > arr[low]) ? (low + 1) : low;</div>
|
||||
<div class="line"><span class="lineno"> 66</span> }</div>
|
||||
<div class="line"><span class="lineno"> 67</span> int64_t mid = low + (high - low) / 2;</div>
|
||||
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">if</span> (arr[mid] > val) {</div>
|
||||
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">binary_search</a>(arr, val, low, mid - 1);</div>
|
||||
<div class="line"><span class="lineno"> 70</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arr[mid] < val) {</div>
|
||||
<div class="line"><span class="lineno"> 71</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">binary_search</a>(arr, val, mid + 1, high);</div>
|
||||
<div class="line"><span class="lineno"> 72</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">return</span> mid + 1;</div>
|
||||
<div class="line"><span class="lineno"> 74</span> }</div>
|
||||
<div class="line"><span class="lineno"> 75</span>}</div>
|
||||
<div class="ttc" id="anamespacesorting_html_a034d8b276518a902962e87d3158b64fd"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">sorting::binary_search</a></div><div class="ttdeci">int64_t binary_search(std::vector< T > &arr, T val, int64_t low, int64_t high)</div><div class="ttdoc">Binary search function to find the most suitable pace for an element.</div><div class="ttdef"><b>Definition:</b> binary_insertion_sort.cpp:63</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -313,24 +313,24 @@ template<typename T , size_t size> </div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>array with elements sorted </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> {</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// few easy cases</span></div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> (size <= 1) {</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordtype">int</span> index = 0; <span class="comment">// initialize loop index</span></div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">while</span> (index < size) {</div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// check for swap</span></div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> ((index == 0) || (arr[index] >= arr[index - 1])) {</div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> index++;</div>
|
||||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[index], arr[index - 1]); <span class="comment">// swap</span></div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> index--;</div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 62</span> {</div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="comment">// few easy cases</span></div>
|
||||
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> (size <= 1) {</div>
|
||||
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 66</span> }</div>
|
||||
<div class="line"><span class="lineno"> 67</span> </div>
|
||||
<div class="line"><span class="lineno"> 68</span> <span class="keywordtype">int</span> index = 0; <span class="comment">// initialize loop index</span></div>
|
||||
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">while</span> (index < size) {</div>
|
||||
<div class="line"><span class="lineno"> 70</span> <span class="comment">// check for swap</span></div>
|
||||
<div class="line"><span class="lineno"> 71</span> <span class="keywordflow">if</span> ((index == 0) || (arr[index] >= arr[index - 1])) {</div>
|
||||
<div class="line"><span class="lineno"> 72</span> index++;</div>
|
||||
<div class="line"><span class="lineno"> 73</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><span class="lineno"> 74</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[index], arr[index - 1]); <span class="comment">// swap</span></div>
|
||||
<div class="line"><span class="lineno"> 75</span> index--;</div>
|
||||
<div class="line"><span class="lineno"> 76</span> }</div>
|
||||
<div class="line"><span class="lineno"> 77</span> }</div>
|
||||
<div class="line"><span class="lineno"> 78</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 79</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>
|
||||
@@ -369,23 +369,23 @@ template<typename T > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> {</div>
|
||||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// few easy cases</span></div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">if</span> (size <= 1) {</div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> }</div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">int</span> index = 0; <span class="comment">// initialize some variables.</span></div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">while</span> (index < size) {</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// check for swap</span></div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">if</span> ((index == 0) || (arr[index] >= arr[index - 1])) {</div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> index++;</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[index], arr[index - 1]); <span class="comment">// swap</span></div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> index--;</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 34</span> {</div>
|
||||
<div class="line"><span class="lineno"> 35</span> <span class="comment">// few easy cases</span></div>
|
||||
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">if</span> (size <= 1) {</div>
|
||||
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><span class="lineno"> 38</span> }</div>
|
||||
<div class="line"><span class="lineno"> 39</span> </div>
|
||||
<div class="line"><span class="lineno"> 40</span> <span class="keywordtype">int</span> index = 0; <span class="comment">// initialize some variables.</span></div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">while</span> (index < size) {</div>
|
||||
<div class="line"><span class="lineno"> 42</span> <span class="comment">// check for swap</span></div>
|
||||
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">if</span> ((index == 0) || (arr[index] >= arr[index - 1])) {</div>
|
||||
<div class="line"><span class="lineno"> 44</span> index++;</div>
|
||||
<div class="line"><span class="lineno"> 45</span> } <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><span class="lineno"> 46</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[index], arr[index - 1]); <span class="comment">// swap</span></div>
|
||||
<div class="line"><span class="lineno"> 47</span> index--;</div>
|
||||
<div class="line"><span class="lineno"> 48</span> }</div>
|
||||
<div class="line"><span class="lineno"> 49</span> }</div>
|
||||
<div class="line"><span class="lineno"> 50</span>}</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -419,19 +419,19 @@ template<typename T > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> {</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">size_t</span> n = arr-><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="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
|
||||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 1; i < n; i++) {</div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> T temp = arr[0][i];</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> int32_t j = i - 1;</div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">while</span> (j >= 0 && temp < arr[0][j]) {</div>
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> arr[0][j + 1] = arr[0][j];</div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> j--;</div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> }</div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> arr[0][j + 1] = temp;</div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 77</span> {</div>
|
||||
<div class="line"><span class="lineno"> 78</span> <span class="keywordtype">size_t</span> n = arr-><a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
||||
<div class="line"><span class="lineno"> 79</span> </div>
|
||||
<div class="line"><span class="lineno"> 80</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 1; i < n; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 81</span> T temp = arr[0][i];</div>
|
||||
<div class="line"><span class="lineno"> 82</span> int32_t j = i - 1;</div>
|
||||
<div class="line"><span class="lineno"> 83</span> <span class="keywordflow">while</span> (j >= 0 && temp < arr[0][j]) {</div>
|
||||
<div class="line"><span class="lineno"> 84</span> arr[0][j + 1] = arr[0][j];</div>
|
||||
<div class="line"><span class="lineno"> 85</span> j--;</div>
|
||||
<div class="line"><span class="lineno"> 86</span> }</div>
|
||||
<div class="line"><span class="lineno"> 87</span> arr[0][j + 1] = temp;</div>
|
||||
<div class="line"><span class="lineno"> 88</span> }</div>
|
||||
<div class="line"><span class="lineno"> 89</span>}</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">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -484,17 +484,17 @@ template<typename T > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> {</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i < n; i++) {</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> T temp = arr[i];</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">int</span> j = i - 1;</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">while</span> (j >= 0 && temp < arr[j]) {</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> arr[j + 1] = arr[j];</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> j--;</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> arr[j + 1] = temp;</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 59</span> {</div>
|
||||
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i < n; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 61</span> T temp = arr[i];</div>
|
||||
<div class="line"><span class="lineno"> 62</span> <span class="keywordtype">int</span> j = i - 1;</div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">while</span> (j >= 0 && temp < arr[j]) {</div>
|
||||
<div class="line"><span class="lineno"> 64</span> arr[j + 1] = arr[j];</div>
|
||||
<div class="line"><span class="lineno"> 65</span> j--;</div>
|
||||
<div class="line"><span class="lineno"> 66</span> }</div>
|
||||
<div class="line"><span class="lineno"> 67</span> arr[j + 1] = temp;</div>
|
||||
<div class="line"><span class="lineno"> 68</span> }</div>
|
||||
<div class="line"><span class="lineno"> 69</span>}</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -530,20 +530,20 @@ template<typename T > </div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Void. </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> {</div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> int64_t n = arr.<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="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">for</span> (int64_t i = 1; i < n; i++) {</div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> T key = arr[i];</div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> int64_t j = i - 1;</div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> int64_t loc = <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">sorting::binary_search</a>(arr, key, 0, j);</div>
|
||||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">while</span> (j >= loc) {</div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> arr[j + 1] = arr[j];</div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> j--;</div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> }</div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> arr[j + 1] = key;</div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 84</span> {</div>
|
||||
<div class="line"><span class="lineno"> 85</span> int64_t n = arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
||||
<div class="line"><span class="lineno"> 86</span> </div>
|
||||
<div class="line"><span class="lineno"> 87</span> <span class="keywordflow">for</span> (int64_t i = 1; i < n; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 88</span> T key = arr[i];</div>
|
||||
<div class="line"><span class="lineno"> 89</span> int64_t j = i - 1;</div>
|
||||
<div class="line"><span class="lineno"> 90</span> int64_t loc = <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a034d8b276518a902962e87d3158b64fd">sorting::binary_search</a>(arr, key, 0, j);</div>
|
||||
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">while</span> (j >= loc) {</div>
|
||||
<div class="line"><span class="lineno"> 92</span> arr[j + 1] = arr[j];</div>
|
||||
<div class="line"><span class="lineno"> 93</span> j--;</div>
|
||||
<div class="line"><span class="lineno"> 94</span> }</div>
|
||||
<div class="line"><span class="lineno"> 95</span> arr[j + 1] = key;</div>
|
||||
<div class="line"><span class="lineno"> 96</span> }</div>
|
||||
<div class="line"><span class="lineno"> 97</span>}</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -603,20 +603,20 @@ template<class Iterator > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> {</div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// create 2 pointers to point at the buffer</span></div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">auto</span> p(<span class="keyword">reinterpret_cast<</span>std::remove_reference_t<decltype(*l)<span class="keyword">></span>*>(b)), c(p);</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// move the left part of the segment</span></div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">for</span> (Iterator t(l); r != t; ++t) *p++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*t);</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// while neither the buffer nor the right part has been exhausted</span></div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// move the smallest element of the two back to the container</span></div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">while</span> (e != r && c != p) *l++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*r < *c ? *r++ : *c++);</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// notice only one of the two following loops will be executed</span></div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// while the right part hasn't bee exhausted, move it back</span></div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">while</span> (e != r) *l++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*r++);</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// while the buffer hasn't bee exhausted, move it back</span></div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">while</span> (c != p) *l++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*c++);</div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 57</span> {</div>
|
||||
<div class="line"><span class="lineno"> 58</span> <span class="comment">// create 2 pointers to point at the buffer</span></div>
|
||||
<div class="line"><span class="lineno"> 59</span> <span class="keyword">auto</span> p(<span class="keyword">reinterpret_cast<</span>std::remove_reference_t<decltype(*l)<span class="keyword">></span>*>(b)), c(p);</div>
|
||||
<div class="line"><span class="lineno"> 60</span> <span class="comment">// move the left part of the segment</span></div>
|
||||
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">for</span> (Iterator t(l); r != t; ++t) *p++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*t);</div>
|
||||
<div class="line"><span class="lineno"> 62</span> <span class="comment">// while neither the buffer nor the right part has been exhausted</span></div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="comment">// move the smallest element of the two back to the container</span></div>
|
||||
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">while</span> (e != r && c != p) *l++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*r < *c ? *r++ : *c++);</div>
|
||||
<div class="line"><span class="lineno"> 65</span> <span class="comment">// notice only one of the two following loops will be executed</span></div>
|
||||
<div class="line"><span class="lineno"> 66</span> <span class="comment">// while the right part hasn't bee exhausted, move it back</span></div>
|
||||
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">while</span> (e != r) *l++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*r++);</div>
|
||||
<div class="line"><span class="lineno"> 68</span> <span class="comment">// while the buffer hasn't bee exhausted, move it back</span></div>
|
||||
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">while</span> (c != p) *l++ = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(*c++);</div>
|
||||
<div class="line"><span class="lineno"> 70</span>}</div>
|
||||
<div class="ttc" id="amove_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a></div><div class="ttdeci">T move(T... args)</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -663,9 +663,9 @@ template<class Iterator > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> {</div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#ae97f4dd815654c4682f564afd718e824">non_recursive_merge_sort</a>(first, last, last - first);</div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 86</span> {</div>
|
||||
<div class="line"><span class="lineno"> 87</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#ae97f4dd815654c4682f564afd718e824">non_recursive_merge_sort</a>(first, last, last - first);</div>
|
||||
<div class="line"><span class="lineno"> 88</span>}</div>
|
||||
<div class="ttc" id="anamespacesorting_html_ae97f4dd815654c4682f564afd718e824"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#ae97f4dd815654c4682f564afd718e824">sorting::non_recursive_merge_sort</a></div><div class="ttdeci">void non_recursive_merge_sort(const Iterator first, const Iterator last)</div><div class="ttdoc">bottom-up merge sort which sorts elements in a non-decreasing order</div><div class="ttdef"><b>Definition:</b> non_recursive_merge_sort.cpp:86</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -719,28 +719,28 @@ template<class Iterator > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> {</div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// create a buffer large enough to store all elements</span></div>
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// dynamically allocated to comply with cpplint</span></div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordtype">char</span>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[n * <span class="keyword">sizeof</span>(*first)];</div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// buffer size can be optimized to largest power of 2 less than n</span></div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// elements divide the container into equally-sized segments whose</span></div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// length start at 1 and keeps increasing by factors of 2</span></div>
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> length(1); length < n; length <<= 1) {</div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// merge adjacent segments whose number is n / (length * 2)</span></div>
|
||||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> Iterator left(first);</div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> counter(n / (length << 1)); counter; --counter) {</div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> Iterator right(left + length), end(right + length);</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(left, right, end, buffer);</div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> left = end;</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// if the number of remaining elements (n * 2 % length) is longer</span></div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// than a segment, merge the remaining elements</span></div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">if</span> ((n & ((length << 1) - 1)) > length)</div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(left, left + length, last, buffer);</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">delete</span>[] buffer;</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 26</span> {</div>
|
||||
<div class="line"><span class="lineno"> 27</span> <span class="comment">// create a buffer large enough to store all elements</span></div>
|
||||
<div class="line"><span class="lineno"> 28</span> <span class="comment">// dynamically allocated to comply with cpplint</span></div>
|
||||
<div class="line"><span class="lineno"> 29</span> <span class="keywordtype">char</span>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[n * <span class="keyword">sizeof</span>(*first)];</div>
|
||||
<div class="line"><span class="lineno"> 30</span> <span class="comment">// buffer size can be optimized to largest power of 2 less than n</span></div>
|
||||
<div class="line"><span class="lineno"> 31</span> <span class="comment">// elements divide the container into equally-sized segments whose</span></div>
|
||||
<div class="line"><span class="lineno"> 32</span> <span class="comment">// length start at 1 and keeps increasing by factors of 2</span></div>
|
||||
<div class="line"><span class="lineno"> 33</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> length(1); length < n; length <<= 1) {</div>
|
||||
<div class="line"><span class="lineno"> 34</span> <span class="comment">// merge adjacent segments whose number is n / (length * 2)</span></div>
|
||||
<div class="line"><span class="lineno"> 35</span> Iterator left(first);</div>
|
||||
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> counter(n / (length << 1)); counter; --counter) {</div>
|
||||
<div class="line"><span class="lineno"> 37</span> Iterator right(left + length), end(right + length);</div>
|
||||
<div class="line"><span class="lineno"> 38</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(left, right, end, buffer);</div>
|
||||
<div class="line"><span class="lineno"> 39</span> left = end;</div>
|
||||
<div class="line"><span class="lineno"> 40</span> }</div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="comment">// if the number of remaining elements (n * 2 % length) is longer</span></div>
|
||||
<div class="line"><span class="lineno"> 42</span> <span class="comment">// than a segment, merge the remaining elements</span></div>
|
||||
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">if</span> ((n & ((length << 1) - 1)) > length)</div>
|
||||
<div class="line"><span class="lineno"> 44</span> <a class="code hl_function" href="../../d5/d4c/group__sorting.html#ga460c61cd948203b4816bef2accb3fc73">merge</a>(left, left + length, last, buffer);</div>
|
||||
<div class="line"><span class="lineno"> 45</span> }</div>
|
||||
<div class="line"><span class="lineno"> 46</span> <span class="keyword">delete</span>[] buffer;</div>
|
||||
<div class="line"><span class="lineno"> 47</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>
|
||||
@@ -787,9 +787,9 @@ template<class Iterator > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> {</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#ae97f4dd815654c4682f564afd718e824">non_recursive_merge_sort</a>(first, first + n, n);</div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 77</span> {</div>
|
||||
<div class="line"><span class="lineno"> 78</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#ae97f4dd815654c4682f564afd718e824">non_recursive_merge_sort</a>(first, first + n, n);</div>
|
||||
<div class="line"><span class="lineno"> 79</span>}</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -831,25 +831,25 @@ Here is the call graph for this function:</div>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >This function takes last element as pivot, places the pivot element at its correct position in sorted array, and places all smaller (smaller than pivot) to left of pivot and all greater elements to right of pivot </p>
|
||||
<div class="fragment"><div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> {</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">int</span> pivot = arr[high]; <span class="comment">// taking the last element as pivot</span></div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">int</span> i = (low - 1); <span class="comment">// Index of smaller element</span></div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = low; j < high; j++) {</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// If current element is smaller than or</span></div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// equal to pivot</span></div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span> (arr[j] <= pivot) {</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> i++; <span class="comment">// increment index of smaller element</span></div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">int</span> temp = arr[i];</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> arr[i] = arr[j];</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> arr[j] = temp;</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">int</span> temp = arr[i + 1];</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> arr[i + 1] = arr[high];</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> arr[high] = temp;</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span> (i + 1);</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 37</span> {</div>
|
||||
<div class="line"><span class="lineno"> 38</span> <span class="keywordtype">int</span> pivot = arr[high]; <span class="comment">// taking the last element as pivot</span></div>
|
||||
<div class="line"><span class="lineno"> 39</span> <span class="keywordtype">int</span> i = (low - 1); <span class="comment">// Index of smaller element</span></div>
|
||||
<div class="line"><span class="lineno"> 40</span> </div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = low; j < high; j++) {</div>
|
||||
<div class="line"><span class="lineno"> 42</span> <span class="comment">// If current element is smaller than or</span></div>
|
||||
<div class="line"><span class="lineno"> 43</span> <span class="comment">// equal to pivot</span></div>
|
||||
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">if</span> (arr[j] <= pivot) {</div>
|
||||
<div class="line"><span class="lineno"> 45</span> i++; <span class="comment">// increment index of smaller element</span></div>
|
||||
<div class="line"><span class="lineno"> 46</span> <span class="keywordtype">int</span> temp = arr[i];</div>
|
||||
<div class="line"><span class="lineno"> 47</span> arr[i] = arr[j];</div>
|
||||
<div class="line"><span class="lineno"> 48</span> arr[j] = temp;</div>
|
||||
<div class="line"><span class="lineno"> 49</span> }</div>
|
||||
<div class="line"><span class="lineno"> 50</span> }</div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="keywordtype">int</span> temp = arr[i + 1];</div>
|
||||
<div class="line"><span class="lineno"> 52</span> arr[i + 1] = arr[high];</div>
|
||||
<div class="line"><span class="lineno"> 53</span> arr[high] = temp;</div>
|
||||
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">return</span> (i + 1);</div>
|
||||
<div class="line"><span class="lineno"> 55</span>}</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -877,33 +877,33 @@ template<<a class="elRef" target="_blank" href="http://en.cppreference.com/w/
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>sorted array of elements </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> {</div>
|
||||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Finding min and max*</span></div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">auto</span> min = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min_element.html">std::min_element</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr));</div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">auto</span> max = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max_element.html">std::max_element</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr));</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Range refers to the number of holes required</span></div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">int</span> range = *max - *min + 1;</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">int</span> *hole = <span class="keyword">new</span> <span class="keywordtype">int</span>[range]();</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// Copying all array values to pigeonhole</span></div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; i++) {</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> hole[arr[i] - *min] = arr[i];</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// Deleting elements from list and storing to original array</span></div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">int</span> count = 0;</div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < range; i++) {</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">while</span> (hole[i] != <span class="charliteral">'\0'</span>) {</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> arr[count] = hole[i];</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> hole[i] = {};</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> count++;</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> }</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">delete</span>[] hole;</div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 34</span> {</div>
|
||||
<div class="line"><span class="lineno"> 35</span> <span class="comment">// Finding min and max*</span></div>
|
||||
<div class="line"><span class="lineno"> 36</span> <span class="keyword">auto</span> min = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min_element.html">std::min_element</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr));</div>
|
||||
<div class="line"><span class="lineno"> 37</span> <span class="keyword">auto</span> max = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/max_element.html">std::max_element</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a>(arr), <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a>(arr));</div>
|
||||
<div class="line"><span class="lineno"> 38</span> </div>
|
||||
<div class="line"><span class="lineno"> 39</span> <span class="comment">// Range refers to the number of holes required</span></div>
|
||||
<div class="line"><span class="lineno"> 40</span> <span class="keywordtype">int</span> range = *max - *min + 1;</div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="keywordtype">int</span> *hole = <span class="keyword">new</span> <span class="keywordtype">int</span>[range]();</div>
|
||||
<div class="line"><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><span class="lineno"> 43</span> <span class="comment">// Copying all array values to pigeonhole</span></div>
|
||||
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 45</span> hole[arr[i] - *min] = arr[i];</div>
|
||||
<div class="line"><span class="lineno"> 46</span> }</div>
|
||||
<div class="line"><span class="lineno"> 47</span> </div>
|
||||
<div class="line"><span class="lineno"> 48</span> <span class="comment">// Deleting elements from list and storing to original array</span></div>
|
||||
<div class="line"><span class="lineno"> 49</span> <span class="keywordtype">int</span> count = 0;</div>
|
||||
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < range; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">while</span> (hole[i] != <span class="charliteral">'\0'</span>) {</div>
|
||||
<div class="line"><span class="lineno"> 52</span> arr[count] = hole[i];</div>
|
||||
<div class="line"><span class="lineno"> 53</span> hole[i] = {};</div>
|
||||
<div class="line"><span class="lineno"> 54</span> count++;</div>
|
||||
<div class="line"><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><span class="lineno"> 56</span> }</div>
|
||||
<div class="line"><span class="lineno"> 57</span> <span class="keyword">delete</span>[] hole;</div>
|
||||
<div class="line"><span class="lineno"> 58</span> </div>
|
||||
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 60</span>}</div>
|
||||
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
|
||||
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/end.html">std::end</a></div><div class="ttdeci">T end(T... args)</div></div>
|
||||
<div class="ttc" id="amax_element_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/max_element.html">std::max_element</a></div><div class="ttdeci">T max_element(T... args)</div></div>
|
||||
@@ -949,13 +949,13 @@ Here is the call graph for this function:</div>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >The main function that implements QuickSort arr[] --> Array to be sorted, low --> Starting index, high --> Ending index </p>
|
||||
<div class="fragment"><div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> {</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> (low < high) {</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordtype">int</span> p = <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a7e7f25f31c50523990437abf2ac3907e">partition</a>(arr, low, high);</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a50b66a1c652291b9a346ec7342967178">quickSort</a>(arr, low, p - 1);</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a50b66a1c652291b9a346ec7342967178">quickSort</a>(arr, p + 1, high);</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 63</span> {</div>
|
||||
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> (low < high) {</div>
|
||||
<div class="line"><span class="lineno"> 65</span> <span class="keywordtype">int</span> p = <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a7e7f25f31c50523990437abf2ac3907e">partition</a>(arr, low, high);</div>
|
||||
<div class="line"><span class="lineno"> 66</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a50b66a1c652291b9a346ec7342967178">quickSort</a>(arr, low, p - 1);</div>
|
||||
<div class="line"><span class="lineno"> 67</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a50b66a1c652291b9a346ec7342967178">quickSort</a>(arr, p + 1, high);</div>
|
||||
<div class="line"><span class="lineno"> 68</span> }</div>
|
||||
<div class="line"><span class="lineno"> 69</span>}</div>
|
||||
<div class="ttc" id="anamespacesorting_html_a50b66a1c652291b9a346ec7342967178"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#a50b66a1c652291b9a346ec7342967178">sorting::quickSort</a></div><div class="ttdeci">void quickSort(int arr[], int low, int high)</div><div class="ttdef"><b>Definition:</b> quick_sort.cpp:63</div></div>
|
||||
<div class="ttc" id="anamespacesorting_html_a7e7f25f31c50523990437abf2ac3907e"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#a7e7f25f31c50523990437abf2ac3907e">sorting::partition</a></div><div class="ttdeci">int partition(int arr[], int low, int high)</div><div class="ttdef"><b>Definition:</b> quick_sort.cpp:37</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
@@ -1014,20 +1014,20 @@ template<typename T > </div>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> {</div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> (low >= high) { <span class="comment">// 1 or 0 elements</span></div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> }</div>
|
||||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> int32_t i = 0, j = 0;</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">// i and j are passed as reference</span></div>
|
||||
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> partition3(arr, low, high, &i, &j);</div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// Recur two halves</span></div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(arr, low, i);</div>
|
||||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(arr, j, high);</div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 94</span> {</div>
|
||||
<div class="line"><span class="lineno"> 95</span> <span class="keywordflow">if</span> (low >= high) { <span class="comment">// 1 or 0 elements</span></div>
|
||||
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><span class="lineno"> 97</span> }</div>
|
||||
<div class="line"><span class="lineno"> 98</span> </div>
|
||||
<div class="line"><span class="lineno"> 99</span> int32_t i = 0, j = 0;</div>
|
||||
<div class="line"><span class="lineno"> 100</span> </div>
|
||||
<div class="line"><span class="lineno"> 101</span> <span class="comment">// i and j are passed as reference</span></div>
|
||||
<div class="line"><span class="lineno"> 102</span> partition3(arr, low, high, &i, &j);</div>
|
||||
<div class="line"><span class="lineno"> 103</span> </div>
|
||||
<div class="line"><span class="lineno"> 104</span> <span class="comment">// Recur two halves</span></div>
|
||||
<div class="line"><span class="lineno"> 105</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(arr, low, i);</div>
|
||||
<div class="line"><span class="lineno"> 106</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(arr, j, high);</div>
|
||||
<div class="line"><span class="lineno"> 107</span>}</div>
|
||||
<div class="ttc" id="anamespacesorting_html_a6eb67c2f91c98cf4464f75b5882022de"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">sorting::quicksort</a></div><div class="ttdeci">std::vector< T > quicksort(std::vector< T > arr, int32_t low, int32_t high)</div><div class="ttdef"><b>Definition:</b> quick_sort_3.cpp:119</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -1086,22 +1086,22 @@ template<typename T > </div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>sorted array vector </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> {</div>
|
||||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">if</span> (low >= high) { <span class="comment">// 1 or 0 elements</span></div>
|
||||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> int32_t i = 0, j = 0;</div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
|
||||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// i and j are passed as reference</span></div>
|
||||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> partition3(&arr, low, high, &i, &j);</div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// Recur two halves</span></div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(&arr, low, i);</div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(&arr, j, high);</div>
|
||||
<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> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 119</span> {</div>
|
||||
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">if</span> (low >= high) { <span class="comment">// 1 or 0 elements</span></div>
|
||||
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 122</span> }</div>
|
||||
<div class="line"><span class="lineno"> 123</span> </div>
|
||||
<div class="line"><span class="lineno"> 124</span> int32_t i = 0, j = 0;</div>
|
||||
<div class="line"><span class="lineno"> 125</span> </div>
|
||||
<div class="line"><span class="lineno"> 126</span> <span class="comment">// i and j are passed as reference</span></div>
|
||||
<div class="line"><span class="lineno"> 127</span> partition3(&arr, low, high, &i, &j);</div>
|
||||
<div class="line"><span class="lineno"> 128</span> </div>
|
||||
<div class="line"><span class="lineno"> 129</span> <span class="comment">// Recur two halves</span></div>
|
||||
<div class="line"><span class="lineno"> 130</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(&arr, low, i);</div>
|
||||
<div class="line"><span class="lineno"> 131</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#a6eb67c2f91c98cf4464f75b5882022de">quicksort</a>(&arr, j, high);</div>
|
||||
<div class="line"><span class="lineno"> 132</span> </div>
|
||||
<div class="line"><span class="lineno"> 133</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 134</span>}</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -1142,13 +1142,13 @@ template<typename T , size_t N> </div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>new array with elements sorted from a given array </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> {</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Untill array is not sorted</span></div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">while</span> (!<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/begin.html">begin</a>(), arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/end.html">end</a>())) {</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/random_shuffle.html">std::random_shuffle</a>(arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/begin.html">begin</a>(), arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/end.html">end</a>());<span class="comment">// Shuffle the array</span></div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 51</span> {</div>
|
||||
<div class="line"><span class="lineno"> 52</span> <span class="comment">// Untill array is not sorted</span></div>
|
||||
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">while</span> (!<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a>(arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/begin.html">begin</a>(), arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/end.html">end</a>())) {</div>
|
||||
<div class="line"><span class="lineno"> 54</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/random_shuffle.html">std::random_shuffle</a>(arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/begin.html">begin</a>(), arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array/end.html">end</a>());<span class="comment">// Shuffle the array</span></div>
|
||||
<div class="line"><span class="lineno"> 55</span> }</div>
|
||||
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 57</span>}</div>
|
||||
<div class="ttc" id="ais_sorted_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/is_sorted.html">std::is_sorted</a></div><div class="ttdeci">T is_sorted(T... args)</div></div>
|
||||
<div class="ttc" id="arandom_shuffle_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/random_shuffle.html">std::random_shuffle</a></div><div class="ttdeci">T random_shuffle(T... args)</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
@@ -1205,21 +1205,21 @@ template<typename T > </div>
|
||||
<p >< base case; when size of the array is 1</p>
|
||||
<p >< iterating over the entire array</p>
|
||||
<p >< if a larger number appears before the smaller one, swap them.</p>
|
||||
<div class="fragment"><div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> {</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordflow">if</span> (n == 1) { <span class="comment">//!< base case; when size of the array is 1</span></div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">for</span> (uint64_t i = 0; i < n - 1; i++) { <span class="comment">//!< iterating over the entire array</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> //!< if a larger number appears before the smaller one, swap them.</span></div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"></span> <span class="keywordflow">if</span> ((*nums)[i] > (*nums)[i + 1]) {</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>((*nums)[i], (*nums)[i + 1]);</div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> }</div>
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> }</div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"></span> </div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> //!< calling the function after we have fixed the last element</span></div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"></span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#ae3a775d99dbbb94c130a973df0cfddcf">recursive_bubble_sort</a>(nums, n - 1);</div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 74</span> {</div>
|
||||
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">if</span> (n == 1) { <span class="comment">//!< base case; when size of the array is 1</span></div>
|
||||
<div class="line"><span class="lineno"> 76</span> <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><span class="lineno"> 77</span> }</div>
|
||||
<div class="line"><span class="lineno"> 78</span> </div>
|
||||
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">for</span> (uint64_t i = 0; i < n - 1; i++) { <span class="comment">//!< iterating over the entire array</span><span class="comment"></span></div>
|
||||
<div class="line"><span class="lineno"> 80</span><span class="comment"> //!< if a larger number appears before the smaller one, swap them.</span></div>
|
||||
<div class="line"><span class="lineno"> 81</span><span class="comment"></span> <span class="keywordflow">if</span> ((*nums)[i] > (*nums)[i + 1]) {</div>
|
||||
<div class="line"><span class="lineno"> 82</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>((*nums)[i], (*nums)[i + 1]);</div>
|
||||
<div class="line"><span class="lineno"> 83</span> }</div>
|
||||
<div class="line"><span class="lineno"> 84</span> }</div>
|
||||
<div class="line"><span class="lineno"> 85</span><span class="comment"></span> </div>
|
||||
<div class="line"><span class="lineno"> 86</span><span class="comment"> //!< calling the function after we have fixed the last element</span></div>
|
||||
<div class="line"><span class="lineno"> 87</span><span class="comment"></span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#ae3a775d99dbbb94c130a973df0cfddcf">recursive_bubble_sort</a>(nums, n - 1);</div>
|
||||
<div class="line"><span class="lineno"> 88</span>}</div>
|
||||
<div class="ttc" id="anamespacesorting_html_ae3a775d99dbbb94c130a973df0cfddcf"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#ae3a775d99dbbb94c130a973df0cfddcf">sorting::recursive_bubble_sort</a></div><div class="ttdeci">void recursive_bubble_sort(std::vector< T > *nums, uint64_t n)</div><div class="ttdoc">This is an implementation of the recursive_bubble_sort. A vector is passed to the function which is t...</div><div class="ttdef"><b>Definition:</b> recursive_bubble_sort.cpp:74</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -1255,29 +1255,29 @@ Here is the call graph for this function:</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<div class="fragment"><div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> {</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint64_t></a> array(</div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(),</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>()); <span class="comment">// declare a vector in which result will be stored</span></div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">for</span> (uint64_t it = 0; it < len; ++it) {</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> uint64_t min = it; <span class="comment">// set min value</span></div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">for</span> (uint64_t it2 = it + 1; it2 < len; ++it2) {</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">if</span> (array[it2] < array[min]) { <span class="comment">// check which element is smaller</span></div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> min = it2; <span class="comment">// store index of smallest element to min</span></div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> }</div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> }</div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">if</span> (min != it) { <span class="comment">// swap if min does not match to i</span></div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> uint64_t tmp = array[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">min</a>];</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> array[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">min</a>] = array[it];</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> array[it] = tmp;</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> }</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> }</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> array; <span class="comment">// return sorted vector</span></div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 48</span> {</div>
|
||||
<div class="line"><span class="lineno"> 49</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<uint64_t></a> array(</div>
|
||||
<div class="line"><span class="lineno"> 50</span> arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(),</div>
|
||||
<div class="line"><span class="lineno"> 51</span> arr.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>()); <span class="comment">// declare a vector in which result will be stored</span></div>
|
||||
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">for</span> (uint64_t it = 0; it < len; ++it) {</div>
|
||||
<div class="line"><span class="lineno"> 53</span> uint64_t min = it; <span class="comment">// set min value</span></div>
|
||||
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">for</span> (uint64_t it2 = it + 1; it2 < len; ++it2) {</div>
|
||||
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">if</span> (array[it2] < array[min]) { <span class="comment">// check which element is smaller</span></div>
|
||||
<div class="line"><span class="lineno"> 56</span> min = it2; <span class="comment">// store index of smallest element to min</span></div>
|
||||
<div class="line"><span class="lineno"> 57</span> }</div>
|
||||
<div class="line"><span class="lineno"> 58</span> }</div>
|
||||
<div class="line"><span class="lineno"> 59</span> </div>
|
||||
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">if</span> (min != it) { <span class="comment">// swap if min does not match to i</span></div>
|
||||
<div class="line"><span class="lineno"> 61</span> uint64_t tmp = array[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">min</a>];</div>
|
||||
<div class="line"><span class="lineno"> 62</span> array[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/min.html">min</a>] = array[it];</div>
|
||||
<div class="line"><span class="lineno"> 63</span> array[it] = tmp;</div>
|
||||
<div class="line"><span class="lineno"> 64</span> }</div>
|
||||
<div class="line"><span class="lineno"> 65</span> }</div>
|
||||
<div class="line"><span class="lineno"> 66</span> </div>
|
||||
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">return</span> array; <span class="comment">// return sorted vector</span></div>
|
||||
<div class="line"><span class="lineno"> 68</span>}</div>
|
||||
<div class="ttc" id="amin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/min.html">std::min</a></div><div class="ttdeci">T min(T... args)</div></div>
|
||||
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div></div>
|
||||
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector< uint64_t ></a></div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -1299,9 +1299,9 @@ template<typename T > </div>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >function overload - when input array is of type <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>, simply send the data content and the data length to the above function. </p>
|
||||
<div class="fragment"><div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> {</div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#af2c5b92cbfe73f63f6074c61b0a45331">shell_sort</a>(arr-><a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), arr-><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="l00077" name="l00077"></a><span class="lineno"> 77</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 75</span> {</div>
|
||||
<div class="line"><span class="lineno"> 76</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#af2c5b92cbfe73f63f6074c61b0a45331">shell_sort</a>(arr-><a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/data.html">data</a>(), arr-><a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>());</div>
|
||||
<div class="line"><span class="lineno"> 77</span>}</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="anamespacesorting_html_af2c5b92cbfe73f63f6074c61b0a45331"><div class="ttname"><a href="../../d5/d91/namespacesorting.html#af2c5b92cbfe73f63f6074c61b0a45331">sorting::shell_sort</a></div><div class="ttdeci">void shell_sort(std::vector< T > *arr)</div><div class="ttdef"><b>Definition:</b> shell_sort2.cpp:75</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
@@ -1341,24 +1341,24 @@ template<typename T > </div>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Optimized algorithm - takes half the time by utilizing Mar </p>
|
||||
<div class="fragment"><div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> {</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> gaps[] = {701, 301, 132, 57, 23, 10, 4, 1};</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> gap_len = 8;</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">size_t</span> i, j, g;</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">for</span> (g = 0; g < gap_len; g++) {</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> gap = gaps[g];</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">for</span> (i = gap; i < LEN; i++) {</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> T tmp = arr[i];</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">for</span> (j = i; j >= gap && (arr[j - gap] - tmp) > 0; j -= gap) {</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> arr[j] = arr[j - gap];</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> }</div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> arr[j] = tmp;</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 45</span> {</div>
|
||||
<div class="line"><span class="lineno"> 46</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> gaps[] = {701, 301, 132, 57, 23, 10, 4, 1};</div>
|
||||
<div class="line"><span class="lineno"> 47</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> gap_len = 8;</div>
|
||||
<div class="line"><span class="lineno"> 48</span> <span class="keywordtype">size_t</span> i, j, g;</div>
|
||||
<div class="line"><span class="lineno"> 49</span> </div>
|
||||
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">for</span> (g = 0; g < gap_len; g++) {</div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> gap = gaps[g];</div>
|
||||
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">for</span> (i = gap; i < LEN; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 53</span> T tmp = arr[i];</div>
|
||||
<div class="line"><span class="lineno"> 54</span> </div>
|
||||
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">for</span> (j = i; j >= gap && (arr[j - gap] - tmp) > 0; j -= gap) {</div>
|
||||
<div class="line"><span class="lineno"> 56</span> arr[j] = arr[j - gap];</div>
|
||||
<div class="line"><span class="lineno"> 57</span> }</div>
|
||||
<div class="line"><span class="lineno"> 58</span> </div>
|
||||
<div class="line"><span class="lineno"> 59</span> arr[j] = tmp;</div>
|
||||
<div class="line"><span class="lineno"> 60</span> }</div>
|
||||
<div class="line"><span class="lineno"> 61</span> }</div>
|
||||
<div class="line"><span class="lineno"> 62</span>}</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -1380,9 +1380,9 @@ template<typename T , size_t N> </div>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >function overload - when input array is of a known length array type </p>
|
||||
<div class="fragment"><div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> {</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#af2c5b92cbfe73f63f6074c61b0a45331">shell_sort</a>(arr, N);</div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 67</span> {</div>
|
||||
<div class="line"><span class="lineno"> 68</span> <a class="code hl_function" href="../../d5/d91/namespacesorting.html#af2c5b92cbfe73f63f6074c61b0a45331">shell_sort</a>(arr, N);</div>
|
||||
<div class="line"><span class="lineno"> 69</span>}</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -1423,13 +1423,13 @@ template<typename T , size_t N> </div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>new array with elements shuffled from a given array </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> {</div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; i++) {</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Swaps i'th index with random index (less than array size)</span></div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[i], arr[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % N]);</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>}</div>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 36</span> {</div>
|
||||
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 38</span> <span class="comment">// Swaps i'th index with random index (less than array size)</span></div>
|
||||
<div class="line"><span class="lineno"> 39</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(arr[i], arr[<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % N]);</div>
|
||||
<div class="line"><span class="lineno"> 40</span> }</div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">return</span> arr;</div>
|
||||
<div class="line"><span class="lineno"> 42</span>}</div>
|
||||
<div class="ttc" id="arand_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a></div><div class="ttdeci">T rand(T... args)</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -1446,7 +1446,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="../../d5/d91/namespacesorting.html">sorting</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.2 </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.3 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user