<?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[Binäre Suche - Verständnisfrage]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>In meinem Lehrheft ist gerade die binäre Suche ein Thema. Dazu habe ich im Netz ein wenig gestöbert und habe dann auch hier im Forum etwas dazu gefunden.<br />
Mein Code sieht erstmal im gesamten so aus:</p>
<pre><code>/*#################################
Binäre Suche
#################################*/

#include &lt;iostream&gt;
#include &lt;time.h&gt;
#include &lt;stdlib.h&gt;

using namespace std;

int main()
{
    // die maximale Anzahl der Werte
    const int MAX = 100;
    // ei Feld für die Werte
    int werte[MAX];
    // wurde schon ein Wert gefunden?
    bool gefunden = false;
    // für die Suche
    int kriterium = 0;
    int ende = MAX -1, anfang = 0, mitte;
    // eine Hilfsvariable für den Tausch
    int tauschTemp;

    //den Zufallsgenerator initialisieren
    srand (time(NULL));

    cout &lt;&lt; &quot;Binaere Suche&quot; &lt;&lt; endl;
    // die Werte setzen, benutzt werden zufällige Zahlen bis 200
    for (int index = 0; index &lt; MAX; index++) {
        werte[index] = rand() % 200;
    }
    // zur Kontrolle unsortiert ausgeben
    cout &lt;&lt; &quot;Die unsortierten Werte sind: &quot; &lt;&lt; endl &lt;&lt; endl;
    for (int index = 0; index &lt; MAX; index++)
        cout &lt;&lt; werte[index] &lt;&lt; ' ';
    cout &lt;&lt; endl &lt;&lt; endl;
    cout &lt;&lt; &quot;Jetzt wird ueber Bubblesort sortiert..&quot; &lt;&lt; endl;
    // Sortieren
    // Alle Werte durchgehen und dann von vorne nach hinten vergleichen
    for (int i = 0; i &lt; MAX; i++)
        for (int k = 0; k &lt; MAX - i - 1; k++)
            if (werte[k] &gt; werte[k + 1]) {
                tauschTemp = werte[k];
                werte[k] = werte[k + 1];
                werte[k + 1] = tauschTemp;
            }
    // die sortierte Ausgabe
    cout &lt;&lt; endl;
    cout &lt;&lt; &quot;Die sortierten Werte sind: &quot; &lt;&lt; endl &lt;&lt; endl;
    for (int index = 0; index &lt; MAX; index++)
        cout &lt;&lt; werte[index] &lt;&lt; ' ';
    cout &lt;&lt; endl &lt;&lt; endl;
    // Abfrage des Suchkriteriums
    cout &lt;&lt; &quot;Wonach soll gesucht werden? &quot;;
    cin &gt;&gt; kriterium;

    // und jetzt suchen
    // dabei wird immer wieder in links und rechts geteilt
    while ((ende &gt;= anfang) &amp;&amp; (gefunden == false)) {
        // die Mitte berechnen
        mitte = (anfang + ende) / 2;
        // ist die Zahl kleiner als die Zahl in der Mitte, dann wird links weiter gesucht
        if (kriterium &lt; werte[mitte])
            ende = mitte -1;
        // sonst wird rechts weiter gesucht bzw wir haben die Zahl gefunden
        else
            if (kriterium &gt; werte[mitte])
                anfang = mitte + 1;
            else
                gefunden = true;
    }

    for (int i = mitte; i &lt; MAX &amp;&amp; werte[i] == kriterium; i++ )
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; befindet sich an der Position &quot; &lt;&lt; i + 1 &lt;&lt; endl;

    if (gefunden == false)
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; wurde nicht gefunden. &quot; &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Speziell geht es mir um den letzten Teil den ich hier im Forum gefunden habe.</p>
<pre><code>for (int i = mitte; i &lt; MAX &amp;&amp; werte[i] == kriterium; i++ )
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; befindet sich an der Position &quot; &lt;&lt; i + 1 &lt;&lt; endl;

    if (gefunden == false)
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; wurde nicht gefunden. &quot; &lt;&lt; endl;

    return 0;
</code></pre>
<p>Er bewirkt ja, dass alle Treffer die zum Suchkriterium passen ausgegeben werden.<br />
Mein Frage nun, wie das ganze? Es wird doch nur immer wieder die Suche ausgeführt, bis die Liste durch ist und alles was er findet zeigt er an oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337251/binäre-suche-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 10:02:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337251.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Mar 2016 13:26:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binäre Suche - Verständnisfrage on Sat, 19 Mar 2016 13:26:33 GMT]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>In meinem Lehrheft ist gerade die binäre Suche ein Thema. Dazu habe ich im Netz ein wenig gestöbert und habe dann auch hier im Forum etwas dazu gefunden.<br />
Mein Code sieht erstmal im gesamten so aus:</p>
<pre><code>/*#################################
Binäre Suche
#################################*/

#include &lt;iostream&gt;
#include &lt;time.h&gt;
#include &lt;stdlib.h&gt;

using namespace std;

int main()
{
    // die maximale Anzahl der Werte
    const int MAX = 100;
    // ei Feld für die Werte
    int werte[MAX];
    // wurde schon ein Wert gefunden?
    bool gefunden = false;
    // für die Suche
    int kriterium = 0;
    int ende = MAX -1, anfang = 0, mitte;
    // eine Hilfsvariable für den Tausch
    int tauschTemp;

    //den Zufallsgenerator initialisieren
    srand (time(NULL));

    cout &lt;&lt; &quot;Binaere Suche&quot; &lt;&lt; endl;
    // die Werte setzen, benutzt werden zufällige Zahlen bis 200
    for (int index = 0; index &lt; MAX; index++) {
        werte[index] = rand() % 200;
    }
    // zur Kontrolle unsortiert ausgeben
    cout &lt;&lt; &quot;Die unsortierten Werte sind: &quot; &lt;&lt; endl &lt;&lt; endl;
    for (int index = 0; index &lt; MAX; index++)
        cout &lt;&lt; werte[index] &lt;&lt; ' ';
    cout &lt;&lt; endl &lt;&lt; endl;
    cout &lt;&lt; &quot;Jetzt wird ueber Bubblesort sortiert..&quot; &lt;&lt; endl;
    // Sortieren
    // Alle Werte durchgehen und dann von vorne nach hinten vergleichen
    for (int i = 0; i &lt; MAX; i++)
        for (int k = 0; k &lt; MAX - i - 1; k++)
            if (werte[k] &gt; werte[k + 1]) {
                tauschTemp = werte[k];
                werte[k] = werte[k + 1];
                werte[k + 1] = tauschTemp;
            }
    // die sortierte Ausgabe
    cout &lt;&lt; endl;
    cout &lt;&lt; &quot;Die sortierten Werte sind: &quot; &lt;&lt; endl &lt;&lt; endl;
    for (int index = 0; index &lt; MAX; index++)
        cout &lt;&lt; werte[index] &lt;&lt; ' ';
    cout &lt;&lt; endl &lt;&lt; endl;
    // Abfrage des Suchkriteriums
    cout &lt;&lt; &quot;Wonach soll gesucht werden? &quot;;
    cin &gt;&gt; kriterium;

    // und jetzt suchen
    // dabei wird immer wieder in links und rechts geteilt
    while ((ende &gt;= anfang) &amp;&amp; (gefunden == false)) {
        // die Mitte berechnen
        mitte = (anfang + ende) / 2;
        // ist die Zahl kleiner als die Zahl in der Mitte, dann wird links weiter gesucht
        if (kriterium &lt; werte[mitte])
            ende = mitte -1;
        // sonst wird rechts weiter gesucht bzw wir haben die Zahl gefunden
        else
            if (kriterium &gt; werte[mitte])
                anfang = mitte + 1;
            else
                gefunden = true;
    }

    for (int i = mitte; i &lt; MAX &amp;&amp; werte[i] == kriterium; i++ )
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; befindet sich an der Position &quot; &lt;&lt; i + 1 &lt;&lt; endl;

    if (gefunden == false)
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; wurde nicht gefunden. &quot; &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Speziell geht es mir um den letzten Teil den ich hier im Forum gefunden habe.</p>
<pre><code>for (int i = mitte; i &lt; MAX &amp;&amp; werte[i] == kriterium; i++ )
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; befindet sich an der Position &quot; &lt;&lt; i + 1 &lt;&lt; endl;

    if (gefunden == false)
        cout &lt;&lt; &quot;Der Wert &quot; &lt;&lt; kriterium &lt;&lt; &quot; wurde nicht gefunden. &quot; &lt;&lt; endl;

    return 0;
</code></pre>
<p>Er bewirkt ja, dass alle Treffer die zum Suchkriterium passen ausgegeben werden.<br />
Mein Frage nun, wie das ganze? Es wird doch nur immer wieder die Suche ausgeführt, bis die Liste durch ist und alles was er findet zeigt er an oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2490865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2490865</guid><dc:creator><![CDATA[DerGerd]]></dc:creator><pubDate>Sat, 19 Mar 2016 13:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Suche - Verständnisfrage on Sat, 19 Mar 2016 13:57:23 GMT]]></title><description><![CDATA[<p>Wo wird da eine Suche ausgeführt?<br />
Wenn du &quot;gefundene&quot; Programme nicht verstehst, benutze einen Debugger und beobachte was sie tun.</p>
<p>Warum musst du überhaupt einen alten Thread mit C mit cout aus dem Grab holen? In C++ benutzt man std::binary_search.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2490866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2490866</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 19 Mar 2016 13:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Suche - Verständnisfrage on Sat, 19 Mar 2016 17:45:27 GMT]]></title><description><![CDATA[<p>Dieses &quot;gefundene&quot; Programm steht bis auf den besagten letzten Teil in meinem Heft.</p>
<p>Eigentlich wollte ich auch nur wissen ob ich es richtig verstanden habe, denn im Gegensatz zu manch anderen bin ich nicht mit der Fähigkeit geboren worden C++ sofort zu beherrschen. Ich bin gerade dabei es zu lernen und wollte nur etwas Hilfestellung.</p>
<p>Trotzdem danke für den Tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2490882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2490882</guid><dc:creator><![CDATA[DerGerd]]></dc:creator><pubDate>Sat, 19 Mar 2016 17:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Suche - Verständnisfrage on Sat, 19 Mar 2016 17:57:50 GMT]]></title><description><![CDATA[<p>DerGerd schrieb:</p>
<blockquote>
<p>Dieses &quot;gefundene&quot; Programm steht bis auf den besagten letzten Teil in meinem Heft.</p>
</blockquote>
<p>Was für ein Zufall, dass er identisch mit dem Code aus dem Thread von 2012 ist ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2490884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2490884</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 19 Mar 2016 17:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Suche - Verständnisfrage on Sat, 19 Mar 2016 18:08:21 GMT]]></title><description><![CDATA[<p>Ja, weil der Code aus einem Studienheft stammt!<br />
Erst richtig lesen und dann Unterstellungen verbreiten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2490885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2490885</guid><dc:creator><![CDATA[DerGerd]]></dc:creator><pubDate>Sat, 19 Mar 2016 18:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Suche - Verständnisfrage on Sat, 19 Mar 2016 21:17:38 GMT]]></title><description><![CDATA[<p>Ok, hat sich erledigt. Alles geklärt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2490887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2490887</guid><dc:creator><![CDATA[DerGerd]]></dc:creator><pubDate>Sat, 19 Mar 2016 21:17:38 GMT</pubDate></item></channel></rss>