<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rekursiv]]></title><description><![CDATA[<p>hallo</p>
<p>ich habe einen quicksort algorithmus geschrieben<br />
und er funktioniert.<br />
Nur gibt es leider bei arrays größer als 10000 elementen<br />
immer den selben fehler und zwar &quot;0xC00000FD: Stack Overflow&quot;<br />
und da habe ich mich gefragt ob es daran liegt das der algorithmus<br />
die maximale rekursions tiefe über schritten hat.</p>
<p>wo kann ich nun heraus bekommen wie viel ebenen der microsoft visual c++ 6.0 compiler erlaubt?</p>
<p>vielen dank für eure hilfe(schon mal im vorraus)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/50129/rekursiv</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 09:17:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/50129.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Sep 2003 13:53:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rekursiv on Fri, 26 Sep 2003 13:53:58 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>ich habe einen quicksort algorithmus geschrieben<br />
und er funktioniert.<br />
Nur gibt es leider bei arrays größer als 10000 elementen<br />
immer den selben fehler und zwar &quot;0xC00000FD: Stack Overflow&quot;<br />
und da habe ich mich gefragt ob es daran liegt das der algorithmus<br />
die maximale rekursions tiefe über schritten hat.</p>
<p>wo kann ich nun heraus bekommen wie viel ebenen der microsoft visual c++ 6.0 compiler erlaubt?</p>
<p>vielen dank für eure hilfe(schon mal im vorraus)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/361084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/361084</guid><dc:creator><![CDATA[aurux__]]></dc:creator><pubDate>Fri, 26 Sep 2003 13:53:58 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursiv on Fri, 26 Sep 2003 14:12:11 GMT]]></title><description><![CDATA[<p>So allgemein kann man die maximale Tiefe nicht angeben, da das ziemlich von der Anzahl der Parameter der Funktion und den lokalen Variablen in der Funktion abhängt. Allerdings sollte bei 10000 Elementen ein Quicksort noch nicht an die Grenze des Stacks stossen, da du da ja wohl bei einer Rekursionstiefe von ca 14 bist.<br />
Falls es doch an der Größe des Stacks liegt, müsste bei den Linkereinstellungen eine Möglichkeit sein, die Stackgröße anzugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/361099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/361099</guid><dc:creator><![CDATA[musicman]]></dc:creator><pubDate>Fri, 26 Sep 2003 14:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursiv on Fri, 26 Sep 2003 14:48:58 GMT]]></title><description><![CDATA[<p>Warum benutzt du nicht qsort, oder war das eine Übung?<br />
Zeig mal ein wenig Code, dann kann man die Schwachstelle schneller erkennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/361122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/361122</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Fri, 26 Sep 2003 14:48:58 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursiv on Fri, 26 Sep 2003 16:41:39 GMT]]></title><description><![CDATA[<p>hier ist ein bißchen code<br />
ich denke der fehler musste wenn in dem abschnitt sein</p>
<p>int e1=pa-a;<br />
int e2=(a+n-1)-pd;<br />
int p1=pb-pa;<br />
int p2=pd-pc;</p>
<p>if(e1 &gt; 1)<br />
{<br />
int min=min(eA,p1);<br />
vecswap(a,pb-min,min);<br />
}<br />
else _swap(a,pc);<br />
if(e2 &gt; 0)<br />
{<br />
int min=min(eB,p2);<br />
vecswap(pb,a+n-min,min);<br />
}</p>
<p>if(p1 &gt; 1)<br />
mk_qsort(a,p1,mdepth,depth);<br />
if( (e1+e2 &gt; 1) &amp;&amp; (depth+1 &lt; mdepth) )<br />
mk_qsort(pb-e1,e1+e2,mdepth,depth+1);<br />
if(p2 &gt; 1)<br />
mk_qsort(a+n-p2,p2,mdepth,depth);</p>
<p>mk_qsort übernimmt 4 parameter(uchar**,int,int,int)</p>
<p>ich nimm jetzt erstmal einen anderen sortier algorithmus<br />
danke für die hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/361205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/361205</guid><dc:creator><![CDATA[aurux__]]></dc:creator><pubDate>Fri, 26 Sep 2003 16:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursiv on Sat, 27 Sep 2003 15:59:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// siehe http://sattas.homeunix.net/zeugs/quicksort.pdf

#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;conio.h&gt;
using namespace std;

const int MAX = 10000000;
int daten[MAX];

void quicksort( int von, int bis )
{
  int links = von, rechts = bis, mitte, zwischen;
  mitte = ( von + bis ) / 2;
  do{
      for(;daten[links] &lt; daten[mitte]; links++);
          for(;daten[mitte] &lt; daten[rechts]; rechts--);
              if(links &lt;= rechts) 
              { 
                  //Tausch durchfuehren
                  zwischen = daten[links];
                  daten[links] = daten[rechts];
                  daten[rechts] = zwischen;
                  links++;
                  rechts--;
              }
    }
    while (links &lt;= rechts);
    if(von &lt; rechts) quicksort(von, rechts);
    if(links &lt; bis)  quicksort(links, bis);
}

int main()
{
  clock_t t1,t2;
  double ts;
  srand(time(NULL));

  for(int i=0;i&lt;(MAX);i++) 
  {
    daten[i] = rand()%MAX;
  } 

  t1=clock();
  quicksort(0,MAX-1); 
  t2=clock();

  ts=(t2-t1)/static_cast&lt;float&gt;(CLOCKS_PER_SEC);
  cout &lt;&lt; &quot;\tZeit: &quot; &lt;&lt; ts &lt;&lt; &quot; QuickSort Test&quot; &lt;&lt; endl;
  cout&lt;&lt;endl;       

  getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/361670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/361670</guid><dc:creator><![CDATA[..]]></dc:creator><pubDate>Sat, 27 Sep 2003 15:59:09 GMT</pubDate></item></channel></rss>