<?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[Versuch, BubbleSort zu schreiben.]]></title><description><![CDATA[<p>Ich habe versucht, den Algorithmus &quot;BubbleSort&quot; in C++ zu realisieren. Hätte gerne Eure Meinung bezüglich Stil und bin offen für Verbesserungsvorschläge:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;size_t S&gt;
void bubbleSort(int (&amp;a)[S]);

int main()
{
	int a[19] = {34,34,56,657,768,435,76,35,27,87,546,8,65,754,756,8756,875,76};
	bubbleSort(a);
	for(int i = 0; i &lt; 18; ++i)
		cout &lt;&lt; a[i] &lt;&lt; endl;
	cin.get();
}

template &lt;size_t S&gt;
void bubbleSort(int (&amp;a)[S])
{
	for(int i = 0; i &lt; S ; ++i)
	{
for(int i = 0, j = 1; i &lt; S, j &lt; S-1; ++i, ++j)
if(a[j] &gt; a[i])
{
	int tmp;
	tmp = a[j];
	a[j] = a[i];
	a[i] = tmp;
}
}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/248106/versuch-bubblesort-zu-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 06:14:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248106.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Aug 2009 18:53:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 18:53:36 GMT]]></title><description><![CDATA[<p>Ich habe versucht, den Algorithmus &quot;BubbleSort&quot; in C++ zu realisieren. Hätte gerne Eure Meinung bezüglich Stil und bin offen für Verbesserungsvorschläge:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;size_t S&gt;
void bubbleSort(int (&amp;a)[S]);

int main()
{
	int a[19] = {34,34,56,657,768,435,76,35,27,87,546,8,65,754,756,8756,875,76};
	bubbleSort(a);
	for(int i = 0; i &lt; 18; ++i)
		cout &lt;&lt; a[i] &lt;&lt; endl;
	cin.get();
}

template &lt;size_t S&gt;
void bubbleSort(int (&amp;a)[S])
{
	for(int i = 0; i &lt; S ; ++i)
	{
for(int i = 0, j = 1; i &lt; S, j &lt; S-1; ++i, ++j)
if(a[j] &gt; a[i])
{
	int tmp;
	tmp = a[j];
	a[j] = a[i];
	a[i] = tmp;
}
}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1763678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763678</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Wed, 19 Aug 2009 18:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 18:57:19 GMT]]></title><description><![CDATA[<p>Ne lesbare Version wär nich schlecht. Und bist du dir sicher mit dem 'i'? Ich habs nich komplett nachvollzogen, aber das sieht ziemlich seltsam aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763681</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 19 Aug 2009 18:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 19:00:44 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Ne lesbare Version wär nich schlecht. Und bist du dir sicher mit dem 'i'? Ich habs nich komplett nachvollzogen, aber das sieht ziemlich seltsam aus.</p>
</blockquote>
<p>Es tut schon das, was es soll, aber lesbarer wirds dadurch nicht, das stimmt schon -.- Hier nochmal mit Zufallszahlen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;time.h&gt;
using namespace std;

template &lt;size_t S&gt;
void bubbleSort(int (&amp;a)[S]);

int main()
{
	time_t t;
	int a[19];
	srand(time(&amp;t));
	for(int f = 0; f &lt; 18; ++f)
		a[f] = rand();
	bubbleSort(a);
	for(int i = 0; i &lt; 18; ++i)
		cout &lt;&lt; a[i] &lt;&lt; endl;
	cin.get();
}

template &lt;size_t S&gt;
void bubbleSort(int (&amp;a)[S])
{
	for(int i = 0; i &lt; S ; ++i)
	{
for(int i = 0, j = 1; i &lt; S, j &lt; S-1; ++i, ++j)
if(a[j] &gt; a[i])
{
	int tmp;
	tmp = a[j];
	a[j] = a[i];
	a[i] = tmp;
}
}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1763682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763682</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Wed, 19 Aug 2009 19:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 19:04:47 GMT]]></title><description><![CDATA[<p>eine ordentliche Einrückung wäre mal das mindesteste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763684</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Wed, 19 Aug 2009 19:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 20:17:26 GMT]]></title><description><![CDATA[<p>Ich habe in deinem anderen Thread vorgeschlagen, dass Bubblesort sich als Übung für den abstrakten Umgang mit Iteratoren anbietet, ist aber wahrscheinlich noch etwas zu früh in deinem C++ Lernprozess. In ein paar Wochen kannst du das ja nochmal anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763723</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 19 Aug 2009 20:17:26 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 20:20:25 GMT]]></title><description><![CDATA[<p>Das mit deinem zweiten i ist definitiv redundant. Schau dir nochmal den Algorithmus genauer an, vorallem wo die zweite Schleife anfängt.</p>
<p>Und da du schon auf einem template&lt;&gt; sitzt, könntest du noch aus dem int nen generisches T machen und somit beliebige Typen übergeben, vorausgesetzt op&lt; ist für T überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763725</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 19 Aug 2009 20:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 21:57:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Hätte gerne Eure Meinung bezüglich Stil</p>
</blockquote>
<p>Ok. Die Wahl des Template-Parameters ist sehr unpraktisch:<br />
- Die Größe der zu sortierenden Sequenz muss zur Compile-Zeit bekannt sein.<br />
- Für jede Größe, wird eine eigene Funktion übersetzt ==&gt; &quot;code bloat&quot;</p>
<p>Eine freie Funktion a la</p>
<pre><code class="language-cpp">void bubble_sort(int* start, size_t length)
{
  ...
}
</code></pre>
<p>hätte es auch getan. Man kann ja immer noch ein Template für Arrays anbieten. Dann aber bitte inline und auf den obigen bubble_sort &quot;umlenken&quot;:</p>
<pre><code class="language-cpp">template&lt;size_t N&gt;
inline void bubble_sort(int (&amp;arr)[N])
{ bubble_sort(arr,N); }
</code></pre>
<p>Die innere Schleife sieht ein bissel kompliziert aus. Brauchst Du unbedingt 2 Laufvariablen? Eine von denen heißt ja auch wieder &quot;i&quot;. Da kann man schonmal durcheinander kommen. Man muss in der inneren Schleife auch nicht mehr alle Elemente anfassen. Eigentlich nur S-i viele, wobei ich mit &quot;i&quot; das erste &quot;i&quot; meine. Denn nach dem ersten Durchlauf steht das größte Element ja schon an letzter Stelle. Nach dem 2. Durchlauf steht das zweitgrößte Element auch an zweitletzter Stelle u.s.w.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763779</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 19 Aug 2009 21:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 23:09:06 GMT]]></title><description><![CDATA[<p>normalerweise hört man auf zu bubblen wenn man einen durchlauf hatte, wo man nichtmehr tauschen musste.</p>
<p>so implementiert gibt es dann sogar praktische anwendungen für bubble-sort. nämlich wenn man oft mit bereits komplett sortierten input zu tun hat, bzw. mit welchen wo nur ein paar elemente um kurze strecken &quot;verschoben&quot; werden müssen.</p>
<p>dann... die zweifache verwendung von &quot;i&quot; als laufvariable ist fürchterlich.</p>
<p>und die zwei laufvariablen in der inneren schleife sind sinnlos - eine reicht da vollkommen. dadurch wird der schleifen-kopf auch 100x übersichtlicher.</p>
<p>davon abgesehen macht <code>i &lt; S, j &lt; S-1</code> als bedingung nicht das was du denkst. hier findet der ganz normale komma-operator anwendung, und das ergebnis des ausdrucks ist einfach nur <code>j &lt; S-1</code> (der teil nach dem letzten komma eben).</p>
<p>int als schleifen-zähler sind in diesem fall auch nicht gut, hier wäre size_t angebracht. vor allem da du als template-parameter ja (sinnvollerweise) auch einen size_t verwendest.</p>
<p>p.S.: sehe gerade dass einige dingen die ich da aufführe schon geschrieben wurden. man sehe es als bestätigung an <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/1763805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763805</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 19 Aug 2009 23:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Wed, 19 Aug 2009 23:19:56 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>normalerweise hört man auf zu bubblen wenn man einen durchlauf hatte, wo man nichtmehr tauschen musste.</p>
</blockquote>
<p>Nee, normalerweise bubbelt man nur eins weniger als soweit, wie man beim letzten mal gebubbelt hat mit der Vorherannahme, daß man bis zum Ende gebubbelt haben würde.</p>
<blockquote>
<p>so implementiert gibt es dann sogar praktische anwendungen für bubble-sort. nämlich wenn man oft mit bereits komplett sortierten input zu tun hat, bzw. mit welchen wo nur ein paar elemente um kurze strecken &quot;verschoben&quot; werden müssen.</p>
</blockquote>
<p>Zweifellos. Wobei Spötter und Theoristen behaupten, Insertion Sort sei selbst bei der Heimatanwendung von Bubble Sort einen halben Tacken schneller.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763810</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 19 Aug 2009 23:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Thu, 20 Aug 2009 00:52:38 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>normalerweise hört man auf zu bubblen wenn man einen durchlauf hatte, wo man nichtmehr tauschen musste.</p>
</blockquote>
<p>Nee, normalerweise bubbelt man nur eins weniger als soweit, wie man beim letzten mal gebubbelt hat mit der Vorherannahme, daß man bis zum Ende gebubbelt haben würde.</p>
</blockquote>
<p>Hrrrrrrrrr, ja, hast Recht.<br />
Peinlich <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/1763824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763824</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 20 Aug 2009 00:52:38 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Thu, 20 Aug 2009 12:33:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;time.h&gt;
using namespace std;

template &lt;size_t S, class T&gt;
void bubbleSort(T (&amp;a)[S]);

int main()
{
    time_t t;
    int a[19];
    srand(time(&amp;t));
    for(int f = 0; f &lt; 18; ++f)
        a[f] = rand();
    bubbleSort(a);
    for(int i = 0; i &lt; 18; ++i)
        cout &lt;&lt; a[i] &lt;&lt; endl;
    cin.get();
}

template &lt;size_t S, class T&gt;
void bubbleSort(T (&amp;a)[S])
{
	for(size_t i = 0; i &lt; S ; ++i)
    {
		for(size_t j = 1; j &lt; S-1; ++j)
		if(a[i] &gt; a[j])
		{
			size_t tmp;
			tmp = a[j];
			a[j] = a[i];
			a[i] = tmp;
		}
	}
}
</code></pre>
<p>Ich habe es etwas verbessert, wäre nett, wenn jemand mir auch noch bei den restlichen Problemen helfen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764114</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 20 Aug 2009 12:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Thu, 20 Aug 2009 12:44:04 GMT]]></title><description><![CDATA[<p>1. Das ist kein BubbleSort mehr<br />
2. Du parametrisierst immer noch die Länge</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764121</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Thu, 20 Aug 2009 12:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Thu, 20 Aug 2009 17:18:07 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>1. Das ist kein BubbleSort mehr<br />
2. Du parametrisierst immer noch die Länge</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;time.h&gt;
using namespace std;

template &lt;size_t S, class T&gt;
void bubbleSort(T (&amp;a)[S]); 

int main()
{
    time_t t;
    int a[19];
    srand(time(&amp;t));
    for(int f = 0; f &lt; 18; ++f)
        a[f] = rand();
    bubbleSort(a);
    for(int i = 0; i &lt; 18; ++i)
        cout &lt;&lt; a[i] &lt;&lt; endl;
    cin.get();
}

template &lt;size_t S, class T&gt;
void bubbleSort(T (&amp;a)[S])
{
for(size_t i = 0; i &lt; S ; ++i)
{
	for(size_t i = 0; i &lt; S; ++i)
	if(a[i+1] &gt; a[i])
	{
		size_t tmp;
	    tmp = a[i+1];
		a[i+1] = a[i];
		a[i] = tmp;
	}
}
}
</code></pre>
<p>Hier ist es wieder BubbleSort. Das Array soll dynamisch in der Länge sein? Wie kann ich dem Template denn einen Zeiger übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764277</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 20 Aug 2009 17:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to Versuch, BubbleSort zu schreiben. on Thu, 20 Aug 2009 17:24:48 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p>Hier ist es wieder BubbleSort. Das Array soll dynamisch in der Länge sein? Wie kann ich dem Template denn einen Zeiger übergeben?</p>
</blockquote>
<p>Du machst irgendwie viel zu viele Threads zu fast gleichen Themen, so dass dann alle guten Antworten verstreut sind. Lies dir dies nochmal durch:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-248101.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-248101.html</a></p>
<p>Besonders den letzten Post von volkard, der die vorherigen nochmals zusammenfasst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764280</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 20 Aug 2009 17:24:48 GMT</pubDate></item></channel></rss>