<?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[qsort und Array]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann ich mit der Funktion qsort aus den Standardbibliotheken auch ein zweidimensionales Array oder nur ein eindimensionales Array sortieren?<br />
Als Beispiel: Ich habe eine Tabelle mit &quot;Vorname&quot;, &quot;Name&quot;, &quot;Land&quot;, &quot;Ort&quot; und &quot;Straße&quot;. Kann ich diese nun z.B. in erster Instanz nach &quot;Name&quot; und in zweiter Instanz nach &quot;Land&quot; sortieren (also z.B. erst alle Müller aus Deutschland und dann die aus Österreich)?<br />
Falls mir jemand sagen kann _ob_ das funktioniert, wäre ich sehr dankbar!<br />
Falls mir jemand sagen kann _wie_ das funktioniert, wäre ich brutalst dankbar! (-:</p>
<p>Gruß<br />
Gange</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/121842/qsort-und-array</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 23:40:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/121842.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Sep 2005 20:05:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to qsort und Array on Tue, 27 Sep 2005 20:05:17 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann ich mit der Funktion qsort aus den Standardbibliotheken auch ein zweidimensionales Array oder nur ein eindimensionales Array sortieren?<br />
Als Beispiel: Ich habe eine Tabelle mit &quot;Vorname&quot;, &quot;Name&quot;, &quot;Land&quot;, &quot;Ort&quot; und &quot;Straße&quot;. Kann ich diese nun z.B. in erster Instanz nach &quot;Name&quot; und in zweiter Instanz nach &quot;Land&quot; sortieren (also z.B. erst alle Müller aus Deutschland und dann die aus Österreich)?<br />
Falls mir jemand sagen kann _ob_ das funktioniert, wäre ich sehr dankbar!<br />
Falls mir jemand sagen kann _wie_ das funktioniert, wäre ich brutalst dankbar! (-:</p>
<p>Gruß<br />
Gange</p>
]]></description><link>https://www.c-plusplus.net/forum/post/881687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/881687</guid><dc:creator><![CDATA[gange]]></dc:creator><pubDate>Tue, 27 Sep 2005 20:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Tue, 27 Sep 2005 20:10:39 GMT]]></title><description><![CDATA[<p>Klar, es funktioniert.</p>
<p>Du kannst ja eine beliebige Vergleichsfunktion angeben.</p>
<p>Zeig mal, wie Dein Array genau aussieht.</p>
<p>(Uebrigens, da wir hier schon im C++ Forum sind, hast Du schonmal ueberlegt, ob nicht auch z.B. eine Map aus der STL verwenden kannst? Dann musst Du Deine Daten evtl. ein bisschen umorganisieren, aber im Prinzip wuerde es gehen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/881689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/881689</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Tue, 27 Sep 2005 20:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Tue, 27 Sep 2005 20:25:04 GMT]]></title><description><![CDATA[<p>qsort ist unter C++ verboten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/881701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/881701</guid><dc:creator><![CDATA[void pointer]]></dc:creator><pubDate>Tue, 27 Sep 2005 20:25:04 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Tue, 27 Sep 2005 20:43:29 GMT]]></title><description><![CDATA[<p>Wenn Du ein zweidimensionales Array mit char* hast, probier mal folgendes:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;map&gt;

using std::string;
using std::multimap;
using std::pair;

const int Y = 100;
const int X = 7;

char* myArray[Y][X]; 

void sort( void ) {
   // Annahme, dass myArray vorher korrekt initialisiert wurde
   typedef multimap&lt;string,int&gt;  myMap;
   typedef pair&lt;string,int&gt;      myPair;
   typedef myMap::const_iterator myMapCIter;
   // Map aufbauen: Schluessel -&gt; Zeile
   myMap map;
   int y;
   for ( y=0; y &lt; Y; ++y ) {
      // die ersten zwei Spalten als Sortierkriterium:
      // alle Felder jeder Spalte muessen gleich breit sein
      string key = string( myArray[y][0] ) + string( myArray[y][1] );
      map.insert( myPair( key, y ) );
   }
   // neues, temporaeres Array aufbauen
   char* newArray[Y][X];         
   myMapCIter iter = map.begin();
   y = 0; // neues y
   while ( iter != map.end() ) {
      int old_y = iter-&gt;second;
      for ( int x=0; x &lt; X; ++x ) {
         newArray[y][x] = myArray[old_y][x];
      }
      iter++; ++y;
   }
   // Ergebnis zurueckkopieren
   for ( y=0; y &lt; Y; ++y ) {
      for ( int x=0; x &lt; X; ++x ) {
         myArray[y][x] = newArray[y][x];
      }
   }
}
</code></pre>
<p>Die Loesung ist mit Sicherheit nicht die eleganteste, aber es ist <em>eine</em> Loesung! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/881708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/881708</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Tue, 27 Sep 2005 20:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 21:12:42 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Erst mal danke für die Antworten!!!<br />
Das Array hat eine maximale Größe von 5x1000. Die Elemente sehen z.B. so aus:</p>
<p>[Vorname] [Name] [Wohnort] [Geburtsdatum] [Email-Adresse]</p>
<p>Es soll nun möglich sein, z.B. in erster Ebene nach Name, in zwieter nach Vorname und in dritter nach Geburtsdatum zu sortieren. In einer der Ebenen evtl auch rückwerts.<br />
Hat jemand eine Idee wie dann die Compare-Funktion die qsort benötigt aussehen soll?<br />
PS: Es _muss_ qsort sein <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/883265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883265</guid><dc:creator><![CDATA[gange]]></dc:creator><pubDate>Thu, 29 Sep 2005 21:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 21:59:09 GMT]]></title><description><![CDATA[<p>In der Theroie doch so</p>
<pre><code>int vergleich (a, b){
  int i;
  i = strcmp(a.name, b.name);
  if (i != 0){
    return i;
  } else {
    i = strcmp(a.vorname, b.vorname);
    if (i != 0){
      return i;
    } else {
      i = geburtvergleich(a.geburt, b.geburt);
      return i;
    }
  }
}
</code></pre>
<p>Ist nicht ganz wie dein Array und auch nur Pseudo-Code aber ich denke du verstehst schon.<br />
geburtvergleich() muss natürlich noch geschieben werden und gleich rückgabesystem haben wie strcmp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883288</guid><dc:creator><![CDATA[imhotep]]></dc:creator><pubDate>Thu, 29 Sep 2005 21:59:09 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 22:03:17 GMT]]></title><description><![CDATA[<p>Verwende std::sort, ist schneller als qsort <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/883290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883290</guid><dc:creator><![CDATA[User--]]></dc:creator><pubDate>Thu, 29 Sep 2005 22:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 22:28:21 GMT]]></title><description><![CDATA[<p>klingt, als solltest Du besser ne</p>
<pre><code class="language-cpp">struct Person
{
  std::string vorname;
  std::string nachname;

  // etc.
}
</code></pre>
<p>bauen. Oder sogar ne class? Hängt vom Anwendungsfall ab...</p>
<p>Dann ist das Array schonmal eindimensional.<br />
Dann bauste einen Vergleicher:</p>
<pre><code class="language-cpp">bool compareByNachname(Person const&amp; lhs, Person const&amp; rhs)
{
  return lhs.nachname &lt; rhs.nachname;
}
</code></pre>
<p>Anschließend genügt ein einfacher Aufruf:</p>
<pre><code class="language-cpp">sort(array, array+anzahlEinträge, compareByNachname);
</code></pre>
<p>Und die Sache ist sortiert. Wenn Du ein anderes Sortierkriterium willst mußt Du nur ne andere Vergleichsfunktion schreiben und die dann als Parameter an sort übergeben.</p>
<p>MfG Jester</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883294</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 29 Sep 2005 22:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 22:36:48 GMT]]></title><description><![CDATA[<blockquote>
<p>PS: Es _muss_ qsort sein</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/883295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883295</guid><dc:creator><![CDATA[quote]]></dc:creator><pubDate>Thu, 29 Sep 2005 22:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 23:18:32 GMT]]></title><description><![CDATA[<p>Oh, übersehen. Da hilft wohl nur eins: Die Aufgabenstellung abändern. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/883301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883301</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 29 Sep 2005 23:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 23:26:31 GMT]]></title><description><![CDATA[<p>Dann ist ja wohl auch Aufgabenstellung, den qsort selber zu schreiben, oder? Amsonsten würde das schließlich keinen Sinn ergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883302</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 29 Sep 2005 23:26:31 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Thu, 29 Sep 2005 23:32:39 GMT]]></title><description><![CDATA[<p>Optimizer schrieb:</p>
<blockquote>
<p>Dann ist ja wohl auch Aufgabenstellung, den qsort selber zu schreiben, oder? Amsonsten würde das schließlich keinen Sinn ergeben.</p>
</blockquote>
<p>Hm, ich ging bisher davon aus, daß es sich dabei um die im C-Standard enthaltene qsort-Funktion handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883305</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 29 Sep 2005 23:32:39 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Fri, 30 Sep 2005 00:02:18 GMT]]></title><description><![CDATA[<p>Ähm ok, mein Fehler, steht im ersten Post wohl so drin. Natürlich IMHO sinnlos, das vorzuschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883306</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 30 Sep 2005 00:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to qsort und Array on Fri, 30 Sep 2005 13:08:27 GMT]]></title><description><![CDATA[<p>Optimizer schrieb:</p>
<blockquote>
<p>Natürlich IMHO sinnlos, das vorzuschreiben.</p>
</blockquote>
<p>Das kommt davon, dass die Aufgabe im Rahmen eines - wie es ja immer heisst - praxisbezogenen FH-Studiums gestellt wurde... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/883619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883619</guid><dc:creator><![CDATA[gange]]></dc:creator><pubDate>Fri, 30 Sep 2005 13:08:27 GMT</pubDate></item></channel></rss>