<?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[quicksort mit array voller zufallszahlen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe versucht eine quicksort funktion zu erstellen. Hierzu habe ich mir verschiedene quicksort funktionen angesehen udn versucht sie zu verstehen. Die Aufgabe ist, ein array mit 100 zufallszahlen von 1-1000 sortieren zu lassen.</p>
<p>Nun habe ich folgenden code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;string&gt; 
#include &lt;ctime&gt; 

using std::cout; 

 int partition(int* array, int begin, int end){ 

     int x = array[begin]; /*Pivot*/ 
     int i=begin-1; 
     int j=end+1; 
     int tmp; 

    while(1){ 

       while(array[++i]&lt;x &amp;&amp; i&lt;=end); 

       while(array[--j]&gt;x &amp;&amp; j&gt;=0); 

       if(i&gt;=j) break; 

        if(array[i]&gt;array[j]){ 
            tmp = array[i]; 
            array[i] = array[j]; 
            array[j] = tmp; 
        } 
      for(; begin &lt; end; begin++) 
         cout &lt;&lt; array[begin] ; 
            cout &lt;&lt; &quot;\n&quot;;     
    } 

	return j; 

	system(&quot;pause&quot;);
 }      

 void quicksort(int* array, int begin, int end){ 

     int q; 
     if(begin&lt;end){ 
         q = partition(array, begin, end); 
         quicksort(array, begin, q); 
         quicksort(array, q+1, end);      
     } 

 } 

 int main(void){ 

     const int inserts=100;
	 int array[inserts];
	 int i;
	 for(i=0;i&lt;inserts;++i) // array mit zufallszahlen kleiner als SIZE füllen
      array[i]=rand()%inserts;

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt; array[i]; 
     cout &lt;&lt; &quot;\nZum sortieren Taste druecken!&quot;; 

     if(getchar()) 
         quicksort(array, 0, inserts); 

     cout &lt;&lt;&quot;\n&quot;; 

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt;array[i]; 

     return 0; 
 }
</code></pre>
<p>Er wird auch sauber kompiliert tut aber wohl nciht das was er soll <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> und haut mir am Ende noch ein</p>
<blockquote>
<p>Run-Time Check Failure #2 - Stack around the variable 'array' was corrupted.</p>
</blockquote>
<p>raus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170702/quicksort-mit-array-voller-zufallszahlen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 05:29:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170702.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Jan 2007 18:37:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Thu, 18 Jan 2007 18:37:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe versucht eine quicksort funktion zu erstellen. Hierzu habe ich mir verschiedene quicksort funktionen angesehen udn versucht sie zu verstehen. Die Aufgabe ist, ein array mit 100 zufallszahlen von 1-1000 sortieren zu lassen.</p>
<p>Nun habe ich folgenden code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;string&gt; 
#include &lt;ctime&gt; 

using std::cout; 

 int partition(int* array, int begin, int end){ 

     int x = array[begin]; /*Pivot*/ 
     int i=begin-1; 
     int j=end+1; 
     int tmp; 

    while(1){ 

       while(array[++i]&lt;x &amp;&amp; i&lt;=end); 

       while(array[--j]&gt;x &amp;&amp; j&gt;=0); 

       if(i&gt;=j) break; 

        if(array[i]&gt;array[j]){ 
            tmp = array[i]; 
            array[i] = array[j]; 
            array[j] = tmp; 
        } 
      for(; begin &lt; end; begin++) 
         cout &lt;&lt; array[begin] ; 
            cout &lt;&lt; &quot;\n&quot;;     
    } 

	return j; 

	system(&quot;pause&quot;);
 }      

 void quicksort(int* array, int begin, int end){ 

     int q; 
     if(begin&lt;end){ 
         q = partition(array, begin, end); 
         quicksort(array, begin, q); 
         quicksort(array, q+1, end);      
     } 

 } 

 int main(void){ 

     const int inserts=100;
	 int array[inserts];
	 int i;
	 for(i=0;i&lt;inserts;++i) // array mit zufallszahlen kleiner als SIZE füllen
      array[i]=rand()%inserts;

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt; array[i]; 
     cout &lt;&lt; &quot;\nZum sortieren Taste druecken!&quot;; 

     if(getchar()) 
         quicksort(array, 0, inserts); 

     cout &lt;&lt;&quot;\n&quot;; 

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt;array[i]; 

     return 0; 
 }
</code></pre>
<p>Er wird auch sauber kompiliert tut aber wohl nciht das was er soll <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> und haut mir am Ende noch ein</p>
<blockquote>
<p>Run-Time Check Failure #2 - Stack around the variable 'array' was corrupted.</p>
</blockquote>
<p>raus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212227</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Thu, 18 Jan 2007 18:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 09:02:49 GMT]]></title><description><![CDATA[<p>Hm niemand eine Idee, was ich falsch mach?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212468</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 09:08:42 GMT]]></title><description><![CDATA[<p>Lass dir mal ausgeben, auf welche Array-Elemente die partition()-Funktion zugreifen will. Für mich sieht das nämlich nach einem typischen 1-daneben-Fehler aus (sprich: das Array geht von 'array[0]' bis 'array[99]', wenn du da auf das Element 'array[100]' zugreifen willst, bekommst du Probleme.</p>
<p>(und da ist es schon freundlich von deinem Compiler, die Bereichsüberschreitung zu melden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212472</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:08:42 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 09:29:42 GMT]]></title><description><![CDATA[<p>tut mir leid aber ich kriegs net weg? ich dachte das wäre mit +1 erledigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212484</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:29:42 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 09:34:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ThaRealMatix schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main(void){ 
    
     const int inserts=100;
	 int array[inserts];
	 int i;
	 for(i=0;i&lt;inserts;++i) // array mit zufallszahlen kleiner als SIZE füllen
      array[i]=rand()%inserts;  // Hat nichts mit Deiner Frage zu tun, aber wolltest Du hier nicht Zahlen zwischen 1-1000 ?
  
     for(i=0; i&lt;inserts; i++) // Hier machst Du es richtig -&gt; beachte vor allem i&lt; inserts (i=100 wäre ein ungüliger Index) 
         cout &lt;&lt; array[i]; 
     cout &lt;&lt; &quot;\nZum sortieren Taste druecken!&quot;; 
  
     if(getchar()) 
         quicksort(array, 0, inserts);  // Du rufst quicksort mit inserts=100 auf
     
     cout &lt;&lt;&quot;\n&quot;; 
  
     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt;array[i]; 
  
     return 0; 
 }
</code></pre>
</blockquote>
<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>Hallo,</p>
<pre><code class="language-cpp">int partition(int* array, int begin, int end){ 
         
     int x = array[begin]; /*Pivot*/ 
     int i=begin-1; 
     int j=end+1;      // beim ersten Aufruf ist end=100, j ist jetzt 101
     int tmp; 
  
    while(1){ 
  
       while(array[++i]&lt;x &amp;&amp; i&lt;=end);  // Hier steht jetzt i&lt;=end (wenn end=100 ist, läuft i jetzt bis zu dem ungültigen Index 100)
                                       // und schlimmer noch ++i ergibt dann den ungültigen Index 101  
       while(array[--j]&gt;x &amp;&amp; j&gt;=0); // --j ist immer noch 100 also auch ein ungültiger Index
</code></pre>
</blockquote>
<p>Ich habe Dir jetzt nur die offensichtliche Indexüberschreitung kommentiert, die beim ersten Aufruf von quicksort entsteht. Sieh Dir nochmal genau an, was Du als begin und end an quicksort und partition übergibst und wie Du sicherstellst, dass Du diesen Bereich nicht überschreitest.</p>
<p>DJohn</p>
<p>Edit: Die Rechtschreibung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212486</guid><dc:creator><![CDATA[DJohn]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 09:37:33 GMT]]></title><description><![CDATA[<p>Hm... also ich habs nun so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;string&gt; 
#include &lt;ctime&gt; 

using std::cout; 

 int partition(int* array, int begin, int end){ 

     int x = array[begin]; /*Pivot*/ 
     int i=begin-1; 
     int j=end; 
     int tmp; 

    while(1){ 

       while(array[i++]&lt;x &amp;&amp; i&lt;=end); 

       while(array[--j]&gt;x &amp;&amp; j&gt;=0); 

       if(i&gt;=j) break; 

        if(array[i]&gt;array[j]){ 
            tmp = array[i]; 
            array[i] = array[j]; 
            array[j] = tmp; 
        } 
      for(; begin &lt; end; begin++) 
         cout &lt;&lt; array[begin] ; 
            cout &lt;&lt; &quot;\n&quot;;     
    } 

	return j; 

	system(&quot;pause&quot;);
 }      

 void quicksort(int* array, int begin, int end){ 

     int q; 
     if(begin&lt;end){ 
         q = partition(array, begin, end); 
         quicksort(array, begin, q); 
         quicksort(array, q+1, end);      
     } 

 } 

 int main(void){ 

     const int inserts=100;
	 int array[inserts];
	 int i;
	 for(i=0;i&lt;inserts;++i) // array mit zufallszahlen kleiner als inserts füllen
      array[i]=rand()%inserts;

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt; array[i]; 
     cout &lt;&lt; &quot;\nZum sortieren Taste druecken!&quot;; 

     if(getchar()) 
         quicksort(array-1, 0, inserts); 

     cout &lt;&lt;&quot;\n&quot;; 

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt;array[i]; 

     return 0; 
 }
</code></pre>
<p>und bekomem zumindest keine fehlermeludng mehr, aber die system(&quot;pause&quot;) wird nicht durchgeführt, die sortierung ist wohl immer noch absolut falsch und ich hab absolut keine ahnung wieso... mit einem &quot;statischen&quot; array hat die noch absolut richtig funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212490</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 10:23:18 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>aber die system(&quot;pause&quot;) wird nicht durchgeführt</p>
</blockquote>
<p>Dann schau doch mal was unmittelbar vor dem Aufruf von system steht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212524</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 19 Jan 2007 10:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 11:40:59 GMT]]></title><description><![CDATA[<p>hm vorher hatte es ja so geklappt.... naja egal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /></p>
<p>aber wieso funktioniert das sortieren nicht mehr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212585</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 11:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 12:39:34 GMT]]></title><description><![CDATA[<p>Hm.. weiss denn keiner Rat? derzeit siehts so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;string&gt; 
#include &lt;ctime&gt; 

using std::cout; 

 int partition(int* array, int begin, int end){ 

     int x = array[begin]; /*Pivot*/ 
     int i=begin-1; 
     int j=end; 
     int tmp; 

    while(1){ 

       while(array[i++]&lt;x &amp;&amp; i&lt;=end); 

       while(array[--j]&gt;x &amp;&amp; j&gt;=0); 

       if(i&gt;=j) break; 

        if(array[i]&gt;array[j]){ 
            tmp = array[i]; 
            array[i] = array[j]; 
            array[j] = tmp; 
        } 
      for(; begin &lt; end; begin++) 
         cout &lt;&lt; array[begin] ; 
            cout &lt;&lt; &quot;\n&quot;;     
    } 

	return j; 

 }      

 void quicksort(int* array, int begin, int end){ 

     int q; 
     if(begin&lt;end){ 
         q = partition(array, begin, end); 
         quicksort(array, begin, q); 
         quicksort(array, q+1, end);      
     } 

 } 

 int main(void){ 

     const int inserts=100;
	 int array[inserts];
	 int i;
	 for(i=0;i&lt;inserts;++i) // array mit zufallszahlen kleiner als inserts füllen
      array[i]=rand()%inserts;

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt; array[i]; 
     cout &lt;&lt; &quot;\nZum sortieren Taste druecken!&quot;; 

     if(getchar()) 
         quicksort(array-1, 0, inserts); 

     cout &lt;&lt;&quot;\n&quot;; 

     for(i=0; i&lt;inserts; i++) 
         cout &lt;&lt;array[i]; 

	 system(&quot;pause&quot;);
     return 0; 
 }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1212616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212616</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 12:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 13:00:08 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>Hm.. weiss denn keiner Rat?</p>
</blockquote>
<p>Wie wäre es denn, wenn du die bisherigen Ratschläge vorher auch mal umsetzt?</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Lass dir mal ausgeben, auf welche Array-Elemente die partition()-Funktion zugreifen will.</p>
</blockquote>
<p>Hast du das getan? Was ist dabei rausgekommen?</p>
<p>DJohn schrieb:</p>
<blockquote>
<p>Sieh Dir nochmal genau an, was Du als begin und end an quicksort und partition übergibst und wie Du sicherstellst, dass Du diesen Bereich nicht überschreitest.</p>
</blockquote>
<p>Hast du das getan? Was ist dabei rausgekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212628</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 19 Jan 2007 13:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to quicksort mit array voller zufallszahlen on Fri, 19 Jan 2007 16:48:22 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(getchar()) 
         quicksort(array-1, 0, inserts);
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Willst du das nichtmal korrigieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212792</guid><dc:creator><![CDATA[omfg]]></dc:creator><pubDate>Fri, 19 Jan 2007 16:48:22 GMT</pubDate></item></channel></rss>