<?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[Problem bei selbstgeschriebenem Quicksort  :(]]></title><description><![CDATA[<p>Hallo nochmal! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<p>Weiß nicht, ob das das passende Forum ist, aber:<br />
Habe versucht, einen kleinen Quicksort nach Sedgewick zu schreiben.<br />
Bei bis zu 100 Zahlen treten noch keine Probleme auf, bei 10000 bleibt leider alles unsortiert <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>
<p>Falls jemand Lust hat, sich durch meinen Code zu quälen, würde ich mich sehr freuen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Anbei: Bin ein Programmierneuling und es sei vorangestellt, dass der Code wahrscheinlich nicht der empfehlenswerteste ist ^^&quot;.</p>
<p>Findet jemand meinen Fehler? Hab alles durchgedacht und komm nicht drauf <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>
<p>Vielen Dank im Voraus!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;time.h&gt;
#include &lt;stdlib.h&gt;

#define DIM 10000

using namespace std;

int quicksort (int* feld, int feldgroesse)
{
    if (feldgroesse &lt;= 1)
        return 1;

    int i = 0;
    int j = feldgroesse - 2;
    int pivot = feld[feldgroesse - 1];
    int temp;

    while (i&lt;j)
    {
          while(feld[i] &lt; pivot &amp;&amp; i &lt; feldgroesse) i++;
          while(feld[j] &gt; pivot &amp;&amp; j &gt;= 0) j--;

          if(i &lt; j)
          {
               temp = feld[i];
               feld[i] = feld[j];
               feld[j] = temp;
          }

    }

    if(pivot &lt;= feld[i])
    {   temp = feld[feldgroesse - 1];
        feld[feldgroesse - 1] = feld[i];
        feld[i] = temp;
    }

    quicksort(&amp;feld[0], j+1);
    quicksort(&amp;feld[i], feldgroesse - (j+1));

    return 0;

}

int main()
{
    int feld[DIM];
    int i;
    srand((unsigned) time(NULL));

    for (i=0; i&lt;DIM; i++)
        feld[i] = rand();

    for (i = 0; i&lt;DIM; i++)
    {
        cout &lt;&lt; feld[i] &lt;&lt; &quot;\t&quot;;

        if(!((i+1)%10))
                   cout &lt;&lt; &quot;\n&quot;;
    }

    quicksort(feld, DIM);
    cout &lt;&lt; &quot;\n\n\n&quot;;

    for (i = 0; i&lt;DIM; i++)
    {
        cout &lt;&lt; feld[i] &lt;&lt; &quot;\t&quot;;

        if(!((i+1)%10))
                   cout &lt;&lt; &quot;\n&quot;;
    }

system(&quot;pause&quot;);
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/242672/problem-bei-selbstgeschriebenem-quicksort</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 18:19:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242672.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Jun 2009 20:40:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 20:40:05 GMT]]></title><description><![CDATA[<p>Hallo nochmal! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<p>Weiß nicht, ob das das passende Forum ist, aber:<br />
Habe versucht, einen kleinen Quicksort nach Sedgewick zu schreiben.<br />
Bei bis zu 100 Zahlen treten noch keine Probleme auf, bei 10000 bleibt leider alles unsortiert <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>
<p>Falls jemand Lust hat, sich durch meinen Code zu quälen, würde ich mich sehr freuen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Anbei: Bin ein Programmierneuling und es sei vorangestellt, dass der Code wahrscheinlich nicht der empfehlenswerteste ist ^^&quot;.</p>
<p>Findet jemand meinen Fehler? Hab alles durchgedacht und komm nicht drauf <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>
<p>Vielen Dank im Voraus!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;time.h&gt;
#include &lt;stdlib.h&gt;

#define DIM 10000

using namespace std;

int quicksort (int* feld, int feldgroesse)
{
    if (feldgroesse &lt;= 1)
        return 1;

    int i = 0;
    int j = feldgroesse - 2;
    int pivot = feld[feldgroesse - 1];
    int temp;

    while (i&lt;j)
    {
          while(feld[i] &lt; pivot &amp;&amp; i &lt; feldgroesse) i++;
          while(feld[j] &gt; pivot &amp;&amp; j &gt;= 0) j--;

          if(i &lt; j)
          {
               temp = feld[i];
               feld[i] = feld[j];
               feld[j] = temp;
          }

    }

    if(pivot &lt;= feld[i])
    {   temp = feld[feldgroesse - 1];
        feld[feldgroesse - 1] = feld[i];
        feld[i] = temp;
    }

    quicksort(&amp;feld[0], j+1);
    quicksort(&amp;feld[i], feldgroesse - (j+1));

    return 0;

}

int main()
{
    int feld[DIM];
    int i;
    srand((unsigned) time(NULL));

    for (i=0; i&lt;DIM; i++)
        feld[i] = rand();

    for (i = 0; i&lt;DIM; i++)
    {
        cout &lt;&lt; feld[i] &lt;&lt; &quot;\t&quot;;

        if(!((i+1)%10))
                   cout &lt;&lt; &quot;\n&quot;;
    }

    quicksort(feld, DIM);
    cout &lt;&lt; &quot;\n\n\n&quot;;

    for (i = 0; i&lt;DIM; i++)
    {
        cout &lt;&lt; feld[i] &lt;&lt; &quot;\t&quot;;

        if(!((i+1)%10))
                   cout &lt;&lt; &quot;\n&quot;;
    }

system(&quot;pause&quot;);
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1722478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722478</guid><dc:creator><![CDATA[Seenitall]]></dc:creator><pubDate>Sat, 06 Jun 2009 20:40:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 20:54:02 GMT]]></title><description><![CDATA[<p>Seenitall schrieb:</p>
<blockquote>
<p>Hab alles durchgedacht und komm nicht drauf <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>
</blockquote>
<p>Anstatt den Code nur zu betrachten und durchzudenken, solltest du die Möglichkeiten des Debuggers nutzen und den Ablauf nachvollziehen, während das Programm läuft (Haltepunkte, schrittweises Ausführen usw.). So kommt man eigentlich immer schnell auf den Fehler. Diese Möglichkeiten werden von Anfängern gerne ignoriert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722480</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Sat, 06 Jun 2009 20:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 21:06:07 GMT]]></title><description><![CDATA[<p>Tip: Endlosschleife</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722486</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 06 Jun 2009 21:06:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 21:27:48 GMT]]></title><description><![CDATA[<p>*hust* Ja klar, dass ich an den Debugger nicht gedacht habe! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>.<br />
.<br />
.</p>
<p>Was ist denn ein Debugger? <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=":confused:"
      alt="😕"
    /></p>
<p>Hmmm... also ich habe davon gehört - aber geht der Debugger denn in die Details meiner Quicksortfunktion? Ich meine, der Sortiervorgang verläuft ja eh im Hintergrund. Und bei kleinen Zahlen um die 100 klappts ja prima mit dem Sortieren, nur bei den großen wird es immer unsortierter.</p>
<p>Kann mir da ein Debugger wirklich helfen?</p>
<p>Denn das Programm funktioniert ja - es ist wahrscheinlich ein Logikfehler bei meinen ganzen Indizes, oder nicht?</p>
<p>Und das mit der Endlosschleife versteh ich nicht? Denn das Prog kommt ja zu einem Ende und gibt die Liste aus. Oder wie ist das zu verstehen?</p>
<p>Tut mir Leid, wenn ich offenbar nicht mal eure Ratschläge verstehe!<br />
Ich sollte, wohl lieber das Programmieren ganz lassen, was?! <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/1722498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722498</guid><dc:creator><![CDATA[Seenitall]]></dc:creator><pubDate>Sat, 06 Jun 2009 21:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 22:11:29 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Tip: Endlosschleife</p>
</blockquote>
<p>sry, ich glaub, ich hab was übersehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":-D"
      alt="😃"
    /></p>
<p>ja, der debugger kann so etwas....</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722507</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 06 Jun 2009 22:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 22:18:05 GMT]]></title><description><![CDATA[<p>Seenitall schrieb:</p>
<blockquote>
<p>Kann mir da ein Debugger wirklich helfen?</p>
<p>Denn das Programm funktioniert ja - es ist wahrscheinlich ein Logikfehler bei meinen ganzen Indizes, oder nicht?</p>
</blockquote>
<p>Genau dafür ist der Debugger da, bei einem lauffähigen Programm die Logikfehler zu finden. Du kannst dein Programm halt während der Ausführung pausieren, dir den Inhalt sämtlicher Variablen angucken und es dann schritt für schritt laufen lassen um zu sehen was passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722511</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Sat, 06 Jun 2009 22:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sat, 06 Jun 2009 23:22:52 GMT]]></title><description><![CDATA[<p>Ich habe ja ein paar Stichwörter genannt. Denen solltest du mal nachgehen.</p>
<p>Hier etwas ausführlicher:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-242371-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-242371-and-highlight-is-.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722523</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Sat, 06 Jun 2009 23:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sun, 07 Jun 2009 00:20:31 GMT]]></title><description><![CDATA[<p>Seenitall schrieb:</p>
<blockquote>
<p>Und das mit der Endlosschleife versteh ich nicht?</p>
</blockquote>
<p>Das versteht eh keiner. Aber egal. Die Zahlen <em>sind</em> sortiert. Vielleicht mal die reine Ausgabe überarbeiten ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722528</guid><dc:creator><![CDATA[hingucker]]></dc:creator><pubDate>Sun, 07 Jun 2009 00:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sun, 07 Jun 2009 08:44:47 GMT]]></title><description><![CDATA[<p>Also ich hab's mit dem Debugger probiert (dem von Codeblocks)<br />
aber offenbar weiß ich damit nicht richtig umzugehen.</p>
<p>Was ich noch rausgefunden habe ist, dass wenn ich die Größe der Zufallszahlen herunterdrehe, dass der Sortiervorgang bereits bei einer kleineren Anzahl von Zahlen (so um die 50) schiefläuft. Komisch...</p>
<p>Seltsam...</p>
<p>Naja gut, danke für Eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722574</guid><dc:creator><![CDATA[Seenitall]]></dc:creator><pubDate>Sun, 07 Jun 2009 08:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sun, 07 Jun 2009 09:03:42 GMT]]></title><description><![CDATA[<p>Bei Codeblocks setzt du einfach mit F5 einen Breakpoint an eine Stelle. Mit F7 kannst du dann Zeile für Zeile durchgehen. Oder du drückst die Knöpfe in der Zeile mit roten X zum Abbrechen des Programms. Da ist auch ein Button mit Extra Optionen dort solltest du Watches auswählen damit du dir die ganzen Variablen im Speicher ansehen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722579</guid><dc:creator><![CDATA[blub* 0]]></dc:creator><pubDate>Sun, 07 Jun 2009 09:03:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Sun, 07 Jun 2009 11:33:04 GMT]]></title><description><![CDATA[<p>Seenitall schrieb:</p>
<blockquote>
<p>Was ich noch rausgefunden habe ist, dass wenn ich die <strong>Größe der Zufallszahlen</strong> herunterdrehe, dass der Sortiervorgang bereits bei einer kleineren Anzahl von Zahlen (so um die 50) schiefläuft. Komisch...</p>
</blockquote>
<p>Schon mal ans Vorzeichen gedacht ? -&gt; (int(!) feld) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722670</guid><dc:creator><![CDATA[hingucker]]></dc:creator><pubDate>Sun, 07 Jun 2009 11:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Mon, 08 Jun 2009 12:56:00 GMT]]></title><description><![CDATA[<p>Ans Vorzeichen?<br />
Ich addiere und subtrahiere ja nirgends.. wo sollte ich da einen Überlauf haben?<br />
Oder wie ist das gemeint?</p>
<p>Hab jetzt mit dem Debugger ein wenig rumprobiert und durch die Watches gesehen (danke für den Tipp! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ), dass sich bei größeren Zahlenmengen nach einigen Schleifendruchgängen tatsächlich riesen Zahlen einschmuggeln. Komm aber nicht dahinter, woher die kommen.</p>
<p>Offenbar greif ich vlt während der Schleife auf Speicherelemente außerhalb meines Felds zu?! hmmm...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723244</guid><dc:creator><![CDATA[Seenitall]]></dc:creator><pubDate>Mon, 08 Jun 2009 12:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Mon, 08 Jun 2009 14:01:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if(pivot &lt;= feld[i])
{  
    temp = feld[feldgroesse - 1];
    feld[feldgroesse - 1] = feld[i];
    feld[i] = temp;
}

quicksort(&amp;feld[0], j+1);    // Eher i+1 oder besser noch i-1, da das i-te Element die endgültige Position bereits besitzt
quicksort(&amp;feld[i], feldgroesse - (j+1)); // Beginnt dann mit i+1 und ist feldgroesse - (i+2) lang.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1723289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723289</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Mon, 08 Jun 2009 14:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei selbstgeschriebenem Quicksort  :( on Tue, 09 Jun 2009 15:10:26 GMT]]></title><description><![CDATA[<p>Vielen Dank für den Tipp und dafür dass du dich eingelesen hast!</p>
<p>Leider funktioniert das bei mir immer noch nicht - hab wohl noch an anderer Stelle den Wurm drin :((.</p>
<p>Bis zu 1000 Werte werden jetzt &quot;nahezu&quot; sortiert - eine Hand voll Ausreisser sind dabei.<br />
Ab 1500 gibt er noch das unsortierte Array aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723929</guid><dc:creator><![CDATA[Seenitall]]></dc:creator><pubDate>Tue, 09 Jun 2009 15:10:26 GMT</pubDate></item></channel></rss>