<?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[vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich möchte ein Programm schreiben, dass einen vector&lt;int&gt; nach dem Sortieren durch Einfügen-Prinzip sortiert.<br />
Mein Programm sieht zur Zeit so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int minimum(vector&lt;int&gt;::iterator anfang, vector&lt;int&gt;::iterator ende);

int main()
{
    cout &lt;&lt; &quot;Programm zum Sortieren von Arrays mit verschiedenen Verfahren&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte Anzahl der zu Sortierenden Zahlen eingeben: &quot;;
    int anzahl;
    cin &gt;&gt; anzahl;
    vector&lt;int&gt; zahlen(anzahl);
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; (i+1) &lt;&lt; &quot;. Zahl: &quot;;
        cin &gt;&gt; zahlen[i];
    }
    cout &lt;&lt; &quot;Die von ihnen angegebenen Zahlen: &quot;;
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    int min = minimum(zahlen.begin(), zahlen.end());
    cout &lt;&lt; &quot;Das absolute Minimum betraegt &quot; &lt;&lt; min &lt;&lt; endl;

    //sortierten Vector erstellen und befüllen + Zeiger als Grenze
    vector&lt;int&gt; sortiert(anzahl);

    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        *itr = minimum(itr, sortiert.end());
    }

    cout &lt;&lt; &quot;Ihre sortierte Eingabe: &quot;;
    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; *itr &lt;&lt; &quot; &quot;;
    }

    return 0;
}

//Funktion um Minimum zu ermitteln
int minimum(vector&lt;int&gt;::iterator anfang, vector&lt;int&gt;::iterator ende)
{
    vector&lt;int&gt; tmp(ende-anfang);
    tmp.insert(tmp.begin(), anfang, ende);
    int min;    //Minimum
    int absmin; //absolutes Minimum

    for (vector&lt;int&gt;::iterator itr = anfang; itr &lt; ende; itr++)
    {
        if (*itr &lt; *(itr+1))
        {
            min = *itr;

            if (*itr &lt; min)
            {
                absmin = *itr;
            }
        }
    }

    if(absmin == NULL)
    {
        return *anfang;
    }
    else
    {
        return absmin;
    }
}
</code></pre>
<p>Jetzt hab ich die Frage wie ich die Funktion &quot;minimum&quot; so Um-/Neuschreiben muss, dass da der sortierte vector ausgegeben wird.</p>
<p>Schon mal Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278078/vector-lt-int-gt-durch-insertion-sort-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 12:44:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278078.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Nov 2010 16:22:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 16:22:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich möchte ein Programm schreiben, dass einen vector&lt;int&gt; nach dem Sortieren durch Einfügen-Prinzip sortiert.<br />
Mein Programm sieht zur Zeit so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int minimum(vector&lt;int&gt;::iterator anfang, vector&lt;int&gt;::iterator ende);

int main()
{
    cout &lt;&lt; &quot;Programm zum Sortieren von Arrays mit verschiedenen Verfahren&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte Anzahl der zu Sortierenden Zahlen eingeben: &quot;;
    int anzahl;
    cin &gt;&gt; anzahl;
    vector&lt;int&gt; zahlen(anzahl);
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; (i+1) &lt;&lt; &quot;. Zahl: &quot;;
        cin &gt;&gt; zahlen[i];
    }
    cout &lt;&lt; &quot;Die von ihnen angegebenen Zahlen: &quot;;
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    int min = minimum(zahlen.begin(), zahlen.end());
    cout &lt;&lt; &quot;Das absolute Minimum betraegt &quot; &lt;&lt; min &lt;&lt; endl;

    //sortierten Vector erstellen und befüllen + Zeiger als Grenze
    vector&lt;int&gt; sortiert(anzahl);

    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        *itr = minimum(itr, sortiert.end());
    }

    cout &lt;&lt; &quot;Ihre sortierte Eingabe: &quot;;
    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; *itr &lt;&lt; &quot; &quot;;
    }

    return 0;
}

//Funktion um Minimum zu ermitteln
int minimum(vector&lt;int&gt;::iterator anfang, vector&lt;int&gt;::iterator ende)
{
    vector&lt;int&gt; tmp(ende-anfang);
    tmp.insert(tmp.begin(), anfang, ende);
    int min;    //Minimum
    int absmin; //absolutes Minimum

    for (vector&lt;int&gt;::iterator itr = anfang; itr &lt; ende; itr++)
    {
        if (*itr &lt; *(itr+1))
        {
            min = *itr;

            if (*itr &lt; min)
            {
                absmin = *itr;
            }
        }
    }

    if(absmin == NULL)
    {
        return *anfang;
    }
    else
    {
        return absmin;
    }
}
</code></pre>
<p>Jetzt hab ich die Frage wie ich die Funktion &quot;minimum&quot; so Um-/Neuschreiben muss, dass da der sortierte vector ausgegeben wird.</p>
<p>Schon mal Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987627</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Mon, 29 Nov 2010 16:22:48 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 16:30:05 GMT]]></title><description><![CDATA[<p>Deine Funktion minimum kennt den sortierten Vector aber nicht. Mir ist auch gar nicht klar, was eine Ausgabe dort zu suchen hätte. Wenn du dies unbedingt willst, übergib ihr den sortierten Vector und lauf in einer Ausgabeschleife drüber.</p>
<p>Aber möchtest du dein Programm nicht lieber zuerst so umschreiben, dass es überhaupt funktioniert? Das tut es nämlich derzeit nicht, wenn ich es richtig nachvollziehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987633</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Nov 2010 16:30:05 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 16:50:50 GMT]]></title><description><![CDATA[<p>Also das:</p>
<pre><code class="language-cpp">//sortierten Vector erstellen und befüllen + Zeiger als Grenze
    vector&lt;int&gt; sortiert(anzahl);

    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        *itr = minimum(itr, sortiert.end());
    }

    cout &lt;&lt; &quot;Ihre sortierte Eingabe: &quot;;
    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; *itr &lt;&lt; &quot; &quot;;
    }
</code></pre>
<p>kann eigentlich erstmal auskommentiert werden. Mir kommt es drauf an, dass dieser Teil:</p>
<pre><code class="language-cpp">for (vector&lt;int&gt;::iterator itr = anfang; itr &lt; ende; itr++)
    {
        if (*itr &lt; *(itr+1))
        {
            min = *itr;

            if (*itr &lt; min)
            {
                absmin = *itr;
            }
        }
    }
</code></pre>
<p>mir das Minimum aus einem bestimmten teil eines vectors zurückgibt.</p>
<p>Den Vector kann ich nicht übergeben, da der Teil(unsortierter Teil) immer kleiner wird. Also wollte ich das über die zwei iteratoren anfang und ende lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987639</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Mon, 29 Nov 2010 16:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 17:17:01 GMT]]></title><description><![CDATA[<p>Dann sag das doch gleich.</p>
<p>Kurze Version:</p>
<pre><code class="language-cpp">int minimum(vector&lt;int&gt;::iterator anfang, vector&lt;int&gt;::iterator ende)
{
 return *std::min_element(anfang, ende);
}
</code></pre>
<p>Lange Version:</p>
<pre><code class="language-cpp">int minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last)
{
  vector&lt;int&gt;::iterator lowest = first;
  if (first==last) return last;
  while (++first!=last)
    if (*first&lt;*lowest)  
      lowest=first;
  return lowest;
}
</code></pre>
<p>Dir ist hoffentlich glasklar, was da passiert!</p>
<p>Das nützt dir aber wenig, weil du hinterher trotzdem Mist baust:</p>
<pre><code class="language-cpp">for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        *itr = minimum(itr, sortiert.end());
    }
</code></pre>
<p>Und was passiert mit dem Element, welches an der Stelle itr stand? Es wird einfach überschrieben! Und was passiert mit dem Minimumelement? Es ist immer noch im vector und wird beim nächsten Mal wieder das kleinste Element sein!<br />
Du musst deinen Ansatz nochmals überdenken. Ein Austausch des ersten und kleinsten Elementes ist das was du suchst. Mach dir klar, warum das so ist!</p>
<p>P.S.: Alle Codebeispiele ungetestet.<br />
P.P.S.: Mach dir wirklich klar, wie das funktioniert, was ich gesagt habe! Nimm die gegebene Lösung nicht einfach hin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987654</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Nov 2010 17:17:01 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 17:39:20 GMT]]></title><description><![CDATA[<p>ok danke für deine Antwort. Deine Codebeispiele leuchten mir ein. Ich werde morgen nochmal gucken und Neuschreiben und je nachdem nochmal mit meinem Infomatiklehrer etwas quatschen.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Lange Version:</p>
<pre><code class="language-cpp">int minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last)
{
  vector&lt;int&gt;::iterator lowest = first;
  if (first==last) return last;
  while (++first!=last)
    if (*first&lt;*lowest)  
      lowest=first;
  return lowest;
}
</code></pre>
<p>Dir ist hoffentlich glasklar, was da passiert!</p>
<p>Das nützt dir aber wenig, weil du hinterher trotzdem Mist baust:</p>
<pre><code class="language-cpp">for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        *itr = minimum(itr, sortiert.end());
    }
</code></pre>
<p>Und was passiert mit dem Element, welches an der Stelle itr stand? Es wird einfach überschrieben! Und was passiert mit dem Minimumelement? Es ist immer noch im vector und wird beim nächsten Mal wieder das kleinste Element sein!<br />
Du musst deinen Ansatz nochmals überdenken. Ein Austausch des ersten und kleinsten Elementes ist das was du suchst. Mach dir klar, warum das so ist!</p>
</blockquote>
<p>aber *itr verweist doch mit jedem Durchlauf auf die nächste Stelle im vector? also müsste der vector ja gefüllt werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987663</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Mon, 29 Nov 2010 17:39:20 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 18:02:33 GMT]]></title><description><![CDATA[<p>HKEY schrieb:</p>
<blockquote>
<p>aber *itr verweist doch mit jedem Durchlauf auf die nächste Stelle im vector? also müsste der vector ja gefüllt werden?</p>
</blockquote>
<p>Oh, ups. Ich nahm an, dass <code>sortiert</code> schon die zu sortierenden Zahlen enthält, da du <code>sortiert</code> nach dem Minimum durchsuchst. Ich sehe, dass dem nicht so ist. Was wiederum den Fehler aufwirft, dass du die zu sortierenden Zahlen gar nicht verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987673</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Nov 2010 18:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 21:20:03 GMT]]></title><description><![CDATA[<p>Also das Project ist auf diesem Stand:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last);

int main()
{
    cout &lt;&lt; &quot;Programm zum Sortieren von Arrays mit verschiedenen Verfahren&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte Anzahl der zu Sortierenden Zahlen eingeben: &quot;;
    int anzahl;
    cin &gt;&gt; anzahl;
    vector&lt;int&gt; zahlen(anzahl);
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; (i+1) &lt;&lt; &quot;. Zahl: &quot;;
        cin &gt;&gt; zahlen[i];
    }
    cout &lt;&lt; &quot;Die von ihnen angegebenen Zahlen: &quot;;
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    int min = minimum(zahlen.begin(), zahlen.end());
    cout &lt;&lt; &quot;Das absolute Minimum betraegt &quot; &lt;&lt; min &lt;&lt; endl;

    //sortierten Vector erstellen und befüllen + Zeiger als Grenze
    vector&lt;int&gt; sortiert(anzahl);

    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        vector&lt;int&gt;::iterator zitr = zahlen.begin();
        *itr = minimum(zitr++, zahlen.end());
    }

    cout &lt;&lt; &quot;Ihre sortierte Eingabe: &quot;;
    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; *itr &lt;&lt; &quot; &quot;;
    }

    return 0;
}

//Funktion um Minimum zu ermitteln
int minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last)
{
    /*
    vector&lt;int&gt; tmp(ende-anfang);
    tmp.insert(tmp.begin(), anfang, ende);
    int min;    //Minimum
    int absmin; //absolutes Minimum

    for (vector&lt;int&gt;::iterator itr = anfang; itr &lt; ende; itr++)
    {
        if (*itr &lt; *(itr+1))
        {
            min = *itr;

            if (*itr &lt; min)
            {
                absmin = *itr;
            }
        }
    }

    if(absmin == NULL)
    {
        return *anfang;
    }
    else
    {
        return absmin;
    }
    */
    vector&lt;int&gt;::iterator lowest = first;
  if (*first == *last) return *last;
  while (++first != last)
    if (*first &lt; *lowest)
      *lowest = *first;
    cout &lt;&lt; &quot;ein Aufruf&quot; &lt;&lt; endl;
    cout &lt;&lt; *first &lt;&lt; &quot;:&quot; &lt;&lt; *last &lt;&lt; endl;
  return *lowest;
}
</code></pre>
<p>Das Minimum wird jetzt richtig erkannt, aber ich lass mir bei jedem Funktionsaufruf die Werte von first und last ausgeben und da sieht man das sich diese nicht verändern, obwohl zitr immer inkrementiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987783</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Mon, 29 Nov 2010 21:20:03 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Mon, 29 Nov 2010 21:33:24 GMT]]></title><description><![CDATA[<p>HKEY schrieb:</p>
<blockquote>
<p>obwohl zitr immer inkrementiert wird.</p>
</blockquote>
<p>Wird er nicht. zitr wird immer auf den Anfang von <code>zahlen</code> gesetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987792</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Nov 2010 21:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Tue, 30 Nov 2010 14:24:35 GMT]]></title><description><![CDATA[<p>boar, bin ich doof <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="😃"
    /><br />
so hab das:</p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator zitr = zahlen.begin();
</code></pre>
<p>jetzt vor die Schleife geschrieben, aber es funktioniert immer noch nicht und zitr wird irgendwie immer noch nicht inkrementiert. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1988038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988038</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Tue, 30 Nov 2010 14:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Tue, 30 Nov 2010 15:34:33 GMT]]></title><description><![CDATA[<p>Code zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988075</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Nov 2010 15:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Tue, 30 Nov 2010 15:38:48 GMT]]></title><description><![CDATA[<p>so hier der komplette Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last);

int main()
{
    cout &lt;&lt; &quot;Programm zum Sortieren von Arrays mit verschiedenen Verfahren&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte Anzahl der zu Sortierenden Zahlen eingeben: &quot;;
    int anzahl;
    cin &gt;&gt; anzahl;
    vector&lt;int&gt; zahlen(anzahl);
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; (i+1) &lt;&lt; &quot;. Zahl: &quot;;
        cin &gt;&gt; zahlen[i];
    }
    cout &lt;&lt; &quot;Die von ihnen angegebenen Zahlen: &quot;;
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    int min = minimum(zahlen.begin(), zahlen.end());
    cout &lt;&lt; &quot;Das absolute Minimum betraegt &quot; &lt;&lt; min &lt;&lt; endl;

    //sortierten Vector erstellen und befüllen + Zeiger als Grenze
    vector&lt;int&gt; sortiert(anzahl);
    vector&lt;int&gt;::iterator zitr = zahlen.begin();

    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        *itr = minimum(zitr++, zahlen.end());
    }

    cout &lt;&lt; &quot;Ihre sortierte Eingabe: &quot;;
    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; *itr &lt;&lt; &quot; &quot;;
    }

    return 0;
}

//Funktion um Minimum zu ermitteln
int minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last)
{
    /*
    vector&lt;int&gt; tmp(ende-anfang);
    tmp.insert(tmp.begin(), anfang, ende);
    int min;    //Minimum
    int absmin; //absolutes Minimum

    for (vector&lt;int&gt;::iterator itr = anfang; itr &lt; ende; itr++)
    {
        if (*itr &lt; *(itr+1))
        {
            min = *itr;

            if (*itr &lt; min)
            {
                absmin = *itr;
            }
        }
    }

    if(absmin == NULL)
    {
        return *anfang;
    }
    else
    {
        return absmin;
    }
    */
    vector&lt;int&gt;::iterator lowest = first;
  if (*first == *last) return *last;
  while (++first != last)
    if (*first &lt; *lowest)
      *lowest = *first;
    cout &lt;&lt; &quot;ein Aufruf&quot; &lt;&lt; endl;
    cout &lt;&lt; *first &lt;&lt; &quot;:&quot; &lt;&lt; *last &lt;&lt; endl;
  return *lowest;
}
</code></pre>
<p>Ausgabe für 1, 2, 3, 4, 5:</p>
<pre><code>Programm zum Sortieren von Arrays mit verschiedenen Verfahren
Bitte Anzahl der zu Sortierenden Zahlen eingeben: 5
1. Zahl: 1
2. Zahl: 2
3. Zahl: 3
4. Zahl: 4
5. Zahl: 5
Die von ihnen angegebenen Zahlen:  1  2  3  4  5
ein Aufruf
63235:63235
Das absolute Minimum betraegt 1
ein Aufruf
63235:63235
ein Aufruf
63235:63235
ein Aufruf
63235:63235
ein Aufruf
63235:63235
ein Aufruf
63235:63235
Ihre sortierte Eingabe:  1  2  3  4  5
Process returned 0 (0x0)   execution time : 5.580 s
</code></pre>
<p>Das macht der richtig.</p>
<p>Aber für z.B. 44, 337, 223, 98, 55:</p>
<pre><code>Programm zum Sortieren von Arrays mit verschiedenen Verfahren
Bitte Anzahl der zu Sortierenden Zahlen eingeben: 5
1. Zahl: 44
2. Zahl: 337
3. Zahl: 223
4. Zahl: 98
5. Zahl: 55
Die von ihnen angegebenen Zahlen:  44  337  223  98  55
ein Aufruf
58251:58251
Das absolute Minimum betraegt 44
ein Aufruf
58251:58251
ein Aufruf
58251:58251
ein Aufruf
58251:58251
ein Aufruf
58251:58251
ein Aufruf
58251:58251
Ihre sortierte Eingabe:  44  55  55  55  55
Process returned 0 (0x0)   execution time : 14.520 s
</code></pre>
<p>Das macht der nicht richtig. <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/1988078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988078</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Tue, 30 Nov 2010 15:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Tue, 30 Nov 2010 16:09:58 GMT]]></title><description><![CDATA[<p>1. Ich habe dir schon vor einem Dutzend Posts geschrieben, was dein eigentliches Problem ist:</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Und was passiert mit dem Minimumelement? Es ist immer noch im vector und wird beim nächsten Mal wieder das kleinste Element sein!</p>
</blockquote>
<p>2. Warum sich deine Ausgabe von *first hier nicht ändert:<br />
Scherzbold. Ob du wohl vorher first so lange erhöht hast, bis du beim (immer gleichen) last angekommen bist? Mach die Ausgabe mal vor die while-Schleife.</p>
<p>3. Übrigens ist *last undefiniert, weil last sich hier auf das erste Element hinter dem vector bezieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988090</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Nov 2010 16:09:58 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Tue, 30 Nov 2010 17:30:59 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>1. Ich habe dir schon vor einem Dutzend Posts geschrieben, was dein eigentliches Problem ist:</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Und was passiert mit dem Minimumelement? Es ist immer noch im vector und wird beim nächsten Mal wieder das kleinste Element sein!</p>
</blockquote>
</blockquote>
<p>Also, das minimum will ich jetzt mit dem Funktionsaufruf von erase löschen. Deswegen sieht mein Code jetzt so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

vector&lt;int&gt;::iterator minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last);

int main()
{
    cout &lt;&lt; &quot;Programm zum Sortieren von Arrays mit verschiedenen Verfahren&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Bitte Anzahl der zu Sortierenden Zahlen eingeben: &quot;;
    int anzahl;
    cin &gt;&gt; anzahl;
    vector&lt;int&gt; zahlen(anzahl);
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; (i+1) &lt;&lt; &quot;. Zahl: &quot;;
        cin &gt;&gt; zahlen[i];
    }
    cout &lt;&lt; &quot;Die von ihnen angegebenen Zahlen: &quot;;
    for (int i = 0; i &lt; anzahl; i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    vector&lt;int&gt;::iterator min;
    min = minimum(zahlen.begin(), zahlen.end());
    cout &lt;&lt; &quot;Das absolute Minimum beträgt: &quot; &lt;&lt; *min &lt;&lt; endl;

    //sortierten Vector erstellen und befüllen + Zeiger als Grenze
    vector&lt;int&gt; sortiert(anzahl);
    vector&lt;int&gt;::iterator zitr = zahlen.begin();

    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        vector&lt;int&gt;::iterator tmp;
        tmp = minimum(zitr++, zahlen.end()-1);
        *itr = *tmp;
        zahlen.erase(tmp);
    }

    cout &lt;&lt; &quot;Ihre sortierte Eingabe: &quot;;
    for (vector&lt;int&gt;::iterator itr = sortiert.begin(); itr != sortiert.end(); itr++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; *itr &lt;&lt; &quot; &quot;;
    }

    return 0;
}

//Funktion um Minimum zu ermitteln
vector&lt;int&gt;::iterator minimum(vector&lt;int&gt;::iterator first, vector&lt;int&gt;::iterator last)
{
    /*
    vector&lt;int&gt; tmp(ende-anfang);
    tmp.insert(tmp.begin(), anfang, ende);
    int min;    //Minimum
    int absmin; //absolutes Minimum

    for (vector&lt;int&gt;::iterator itr = anfang; itr &lt; ende; itr++)
    {
        if (*itr &lt; *(itr+1))
        {
            min = *itr;

            if (*itr &lt; min)
            {
                absmin = *itr;
            }
        }
    }

    if(absmin == NULL)
    {
        return *anfang;
    }
    else
    {
        return absmin;
    }
    */
    cout &lt;&lt; &quot;ein Aufruf&quot; &lt;&lt; endl;
    cout &lt;&lt; *first &lt;&lt; &quot;:&quot; &lt;&lt; *last &lt;&lt; endl;
    vector&lt;int&gt;::iterator lowest = first;
  if (*first == *last) return last;
  while (++first != last)
    if (*first &lt; *lowest)
      *lowest = *first;
  return lowest;
}
</code></pre>
<p>Das Problem ist, dass es jetzt nicht mehr durch die for-Schleife funktioniert.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>2. Warum sich deine Ausgabe von *first hier nicht ändert:<br />
Scherzbold. Ob du wohl vorher first so lange erhöht hast, bis du beim (immer gleichen) last angekommen bist? Mach die Ausgabe mal vor die while-Schleife.</p>
</blockquote>
<p>Wieder meine Dummheit. <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>SeppJ schrieb:</p>
<blockquote>
<p>3. Übrigens ist *last undefiniert, weil last sich hier auf das erste Element hinter dem vector bezieht.</p>
</blockquote>
<p>Stimmt, ich dachte das sich last auf den letzte Integer im vector bezieht, habs aber grad nachgelesen, sonst würd ja auch die for-Schleife nicht funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988125</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Tue, 30 Nov 2010 17:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Tue, 30 Nov 2010 21:58:53 GMT]]></title><description><![CDATA[<p>Bevor du immer weiter rumdoktorst, darf ich nochmal den Vorschlag wiederholen, einfach das kleinste Element mit dem aktuell vordersten den Platz tauschen zu lassen? Dies hat allerlei Vorteile:<br />
- Dein Code wird einfacher statt immer komplizierter.<br />
- In algorithmischer Hinsicht ist das eleganter, weil du nur noch halb so viel Platz brauchst. Ich weiß, es ist ein bisschen komisch, Insertion Sort noch optimieren zu wollen, aber ein Algorithmus der überhaupt keinen zusätzlichen Speicherplatz braucht (außer ein temporäres Element während des Tausches) hat auch im Vergleich zu besseren Sortieralgorithmen seine Berechtigung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988231</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Nov 2010 21:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Wed, 01 Dec 2010 15:20:10 GMT]]></title><description><![CDATA[<p>So habs jetzt geschafft. <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 />
Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

void insertion_sort(vector&lt;int&gt; &amp;vec);

int main()
{
    cout &lt;&lt; &quot;Insertionsort&quot; &lt;&lt; endl;
    int laenge;
    cout &lt;&lt; &quot;Bitte Anzahl der zu sortierenden Zahlen eingeben: &quot;;
    cin &gt;&gt; laenge;
    cout &lt;&lt; endl;
    vector&lt;int&gt; zahlen(laenge);
    for (int i = 0; i &lt; zahlen.capacity(); i++)
    {
        cout &lt;&lt; i+1 &lt;&lt; &quot;. Zahl: &quot;;
        cin &gt;&gt; zahlen[i];
    }
    cout &lt;&lt; &quot;Ihre eingegebenen Zahlen:&quot;;
    for (int i = 0; i &lt; zahlen.capacity(); i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }
    cout &lt;&lt; endl;

    insertion_sort(zahlen);
    cout &lt;&lt; &quot;Ihre sortierte Eingabe:&quot;;
    for (int i = 0; i &lt; zahlen.capacity(); i++)
    {
        cout &lt;&lt; &quot; &quot; &lt;&lt; zahlen[i] &lt;&lt; &quot; &quot;;
    }

    return 0;
}

void insertion_sort(vector&lt;int&gt; &amp;vec)
{
    for (int i = 1; i &lt; vec.capacity(); i++)
    {
        int x, tmp = vec[i];
        for (x = i; x &gt; 0 &amp;&amp; tmp &lt; vec[x-1]; x--)
        {
            vec[x] = vec[x-1];
        }
        vec[x] = tmp;
    }
}
</code></pre>
<p>Der Code ist auch wirklich kürzer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988594</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Wed, 01 Dec 2010 15:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Wed, 01 Dec 2010 15:53:59 GMT]]></title><description><![CDATA[<p>Gewöhn dir aber an, vector::size() in den Schleifen zu verwenden. capacity() liefert nur die Anzahl der Elemente, die in dem angeforderten Bereich Platz haben. size() und capacity() sind nicht zwangsläufig gleich.</p>
<p>Du kannst das auch testen. Erstelle einmal einen vector mit 500 Elementen. Gib dann mal size() und capacity() aus. Diese sind jetzt gleich groß.<br />
Wenn du aber mit push_back ein Element hinzufügst, ist size() 501 und capacity() implementierungsspezifisch, meistens 750 oder 1000, d.h. es wird gleich ein größerer Speicherbereich angefordert als nötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988609</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Wed, 01 Dec 2010 15:53:59 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Wed, 01 Dec 2010 21:03:15 GMT]]></title><description><![CDATA[<p>Ich weis, aber danke nochmal für den Hinweis.<br />
Da hier aber der vector const bleibt, ist es ja egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988785</guid><dc:creator><![CDATA[HKEY]]></dc:creator><pubDate>Wed, 01 Dec 2010 21:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Wed, 01 Dec 2010 21:30:23 GMT]]></title><description><![CDATA[<p>HKEY schrieb:</p>
<blockquote>
<p>Ich weis, aber danke nochmal für den Hinweis.<br />
Da hier aber der vector const bleibt, ist es ja egal.</p>
</blockquote>
<p>Nein, das ist dir gar nicht garantiert, dass die beiden überhaupt gleich sind. Das ist ein krasser Fehler, capacity zu benutzen, wenn size gemeint ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988798</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 01 Dec 2010 21:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;int&amp;gt; durch Insertion Sort sortieren on Wed, 01 Dec 2010 21:42:43 GMT]]></title><description><![CDATA[<p>Mit <code>const</code> hat das im Weiteren wenig zu tun...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988804</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 01 Dec 2010 21:42:43 GMT</pubDate></item></channel></rss>