<?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[Sortieren]]></title><description><![CDATA[<p>Hallo!<br />
In meinem Buch wurde mir die Aufgabe gestellt, einen Vektor mit mehren Zahlen aufsteigend zu sortieren. Dazu soll ich immer mit den Nachbarelemente vergleichen und eventuell vertauschen. Abgebrochen wird, wenn in einem Durchlauf nichts mehr vertauscht werden kann.<br />
Es ist folgender Code rausgekommen:</p>
<pre><code class="language-cpp">int main()
{
	const max = 5;
	unsigned short temp;
	unsigned short unsorted[max];
	bool sorted = false;

	cout &lt;&lt; &quot;Geben Sie &quot; &lt;&lt; max &lt;&lt; &quot; Zahlen ein: &quot; &lt;&lt; endl;
	for(unsigned short c = 0; c &lt; max; c++)
		cin &gt;&gt; unsorted[c];
	cout &lt;&lt; &quot;Die Zahlen werden nun aufsteigend sortiert...&quot; &lt;&lt; endl &lt;&lt; endl;

	while(!sorted)
	{
		sorted = true;

		for(unsigned short i = 0; i &lt; max; i++)
		{

			if(unsorted[i] &gt; unsorted[i+1])
			{
				sorted = false;
				temp = unsorted[i+1];
				unsorted[i+1] = unsorted[i];
				unsorted[i] = temp;
			}
		}
	}

	cout &lt;&lt; &quot;Ergebnis: &quot; &lt;&lt; endl;
	for(unsigned short x = 0; x &lt; max; x++)
		cout &lt;&lt; unsorted[x] &lt;&lt; endl;
	cout &lt;&lt; endl &lt;&lt; &quot;Fertig.&quot; &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Aber müsste es nicht heißen:</p>
<pre><code class="language-cpp">int main()
{
	const max = 5;
	unsigned short temp;
	unsigned short unsorted[max];
	bool sorted = false;

	cout &lt;&lt; &quot;Geben Sie &quot; &lt;&lt; max &lt;&lt; &quot; Zahlen ein: &quot; &lt;&lt; endl;
	for(unsigned short c = 0; c &lt; max; c++)
		cin &gt;&gt; unsorted[c];
	cout &lt;&lt; &quot;Die Zahlen werden nun aufsteigend sortiert...&quot; &lt;&lt; endl &lt;&lt; endl;

	while(!sorted)
	{
		sorted = true;

        //Wenn i das letzte Element ist, wäre i+1 undefiniert?!
		for(unsigned short i = 0; i &lt; (max-1); i++)
		{

			if(unsorted[i] &gt; unsorted[i+1])
			{
				sorted = false;
				temp = unsorted[i+1];
				unsorted[i+1] = unsorted[i];
				unsorted[i] = temp;
			}
		}
	}

	cout &lt;&lt; &quot;Ergebnis: &quot; &lt;&lt; endl;
	for(unsigned short x = 0; x &lt; max; x++)
		cout &lt;&lt; unsorted[x] &lt;&lt; endl;
	cout &lt;&lt; endl &lt;&lt; &quot;Fertig.&quot; &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Denn wenn das letzte Element mit dem letzten Element+1 verglichen wird, ist &quot;letztes Element+1&quot; doch undefiniert, aber es geht trotzdem beides!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/140606/sortieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 04:23:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140606.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Mar 2006 02:34:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sortieren on Thu, 16 Mar 2006 02:34:50 GMT]]></title><description><![CDATA[<p>Hallo!<br />
In meinem Buch wurde mir die Aufgabe gestellt, einen Vektor mit mehren Zahlen aufsteigend zu sortieren. Dazu soll ich immer mit den Nachbarelemente vergleichen und eventuell vertauschen. Abgebrochen wird, wenn in einem Durchlauf nichts mehr vertauscht werden kann.<br />
Es ist folgender Code rausgekommen:</p>
<pre><code class="language-cpp">int main()
{
	const max = 5;
	unsigned short temp;
	unsigned short unsorted[max];
	bool sorted = false;

	cout &lt;&lt; &quot;Geben Sie &quot; &lt;&lt; max &lt;&lt; &quot; Zahlen ein: &quot; &lt;&lt; endl;
	for(unsigned short c = 0; c &lt; max; c++)
		cin &gt;&gt; unsorted[c];
	cout &lt;&lt; &quot;Die Zahlen werden nun aufsteigend sortiert...&quot; &lt;&lt; endl &lt;&lt; endl;

	while(!sorted)
	{
		sorted = true;

		for(unsigned short i = 0; i &lt; max; i++)
		{

			if(unsorted[i] &gt; unsorted[i+1])
			{
				sorted = false;
				temp = unsorted[i+1];
				unsorted[i+1] = unsorted[i];
				unsorted[i] = temp;
			}
		}
	}

	cout &lt;&lt; &quot;Ergebnis: &quot; &lt;&lt; endl;
	for(unsigned short x = 0; x &lt; max; x++)
		cout &lt;&lt; unsorted[x] &lt;&lt; endl;
	cout &lt;&lt; endl &lt;&lt; &quot;Fertig.&quot; &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Aber müsste es nicht heißen:</p>
<pre><code class="language-cpp">int main()
{
	const max = 5;
	unsigned short temp;
	unsigned short unsorted[max];
	bool sorted = false;

	cout &lt;&lt; &quot;Geben Sie &quot; &lt;&lt; max &lt;&lt; &quot; Zahlen ein: &quot; &lt;&lt; endl;
	for(unsigned short c = 0; c &lt; max; c++)
		cin &gt;&gt; unsorted[c];
	cout &lt;&lt; &quot;Die Zahlen werden nun aufsteigend sortiert...&quot; &lt;&lt; endl &lt;&lt; endl;

	while(!sorted)
	{
		sorted = true;

        //Wenn i das letzte Element ist, wäre i+1 undefiniert?!
		for(unsigned short i = 0; i &lt; (max-1); i++)
		{

			if(unsorted[i] &gt; unsorted[i+1])
			{
				sorted = false;
				temp = unsorted[i+1];
				unsorted[i+1] = unsorted[i];
				unsorted[i] = temp;
			}
		}
	}

	cout &lt;&lt; &quot;Ergebnis: &quot; &lt;&lt; endl;
	for(unsigned short x = 0; x &lt; max; x++)
		cout &lt;&lt; unsorted[x] &lt;&lt; endl;
	cout &lt;&lt; endl &lt;&lt; &quot;Fertig.&quot; &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Denn wenn das letzte Element mit dem letzten Element+1 verglichen wird, ist &quot;letztes Element+1&quot; doch undefiniert, aber es geht trotzdem beides!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017218</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 16 Mar 2006 02:34:50 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren on Thu, 16 Mar 2006 04:52:08 GMT]]></title><description><![CDATA[<p>ceplusplus schrieb:</p>
<blockquote>
<p>Denn wenn das letzte Element mit dem letzten Element+1 verglichen wird, ist &quot;letztes Element+1&quot; doch undefiniert,</p>
</blockquote>
<p>Richtig.</p>
<blockquote>
<p>aber es geht trotzdem beides!</p>
</blockquote>
<p>Dann ist das Zufall. Vermutlich liegt hinter dem Array unsorted einfach ein ziemlich großer Wert im Speicher, so dass dessen Position nicht verändert wird. Du kannst ja mal den größtmöglichen Wert für unsigned short eingeben. Wenn der bei dir 16 Bit hat, wäre das 65535. Dann sollte ein Wert in deinem sortierten Array auftauchen, den du nicht eingegeben hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017220</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 16 Mar 2006 04:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren on Thu, 16 Mar 2006 11:08:16 GMT]]></title><description><![CDATA[<p>Komisch, kennt jemand das Buch C++ lernen und professionell anwenden?</p>
<p>Da wird als Musterlösung auch &quot;max&quot; und nicht &quot;(max-1)&quot; verwendet, und es funktioniert trotzdem immer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017410</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 16 Mar 2006 11:08:16 GMT</pubDate></item></channel></rss>