Wie berechne Differenz zwischen zwei Mengen, die in C?

Ich habe zwei arrays, sagen wir A und B mit |A|=8 und |B|=4. Ich will berechnen Sie den Unterschied zwischen A-B. Wie muss ich Vorgehen? Bitte beachten Sie, dass es keine wiederholten Elemente in den sets.

Edit: vielen Dank an alle für eine Vielzahl von eleganten Lösungen. Da bin ich noch in der Prototyp-Phase meines Projektes, für die ich jetzt implementiert die einfachste Lösung, sagte Brian und Owen. Aber ich Schätze die clevere Nutzung von Daten-Strukturen, wie Sie hier vorgeschlagen wird, indem der rest von Ihnen, Obwohl ich bin kein Informatiker sondern Ingenieur und nie studiert Datenstrukturen als natürlich. Sieht aus wie es ist an der Zeit, ich sollte wirklich anfangen zu Lesen CLRS, die ich schon so eine ganze Weile 🙂 nochmals vielen Dank!

  • Es gibt keine solche Sache wie C-STL. Meinst du C++?
  • Ich weiß. Ich wollte nur klarstellen, dass ich nicht wollte, STL-basierte Lösungen.
  • Da die STL ist eine C++-einzige Sache, es ist genug zu sagen, du bist mit C und lassen Sie es zu, dass, wenn jemand die Antwort hat, empfehlen STL würden Sie downvoted (und das zurecht).
  • Ich meine, nicht eine leichte gegen dich oder so, aber trotzdem ist es ein wenig komisch, wie Sie ging, um so große Schmerzen, um zu verhindern, dass Verwirrung, und dann—Hoppla!—die Dinge gingen in die andere Richtung und jemand verwirrt sowieso (Murphy ' s Law schlägt wieder zu, denke ich.)
  • ist dieses Hausaufgaben?
  • NÖ. Ich bin grad student und dieses problem kam in meiner Forschungsarbeit. Ich bisher verwendeten Python-sets für diesen Zweck, aber ich habe jetzt für die Implementierung in C.
  • und BlueRaja, es ist ok und ich verstehe. Eigentlich habe ich wirklich wie wenn erfahrene Nutzer wie Sie Bearbeiten und korrigieren meine Fehler. Das ist alles, was stackoverflow ist!
  • Was sind diese Sätze (Integer, strings,...)? Sind A und B sortiert? Wie groß sind Sie? (E. g-n^2-algorithmen zu tun? nlogn?) Wie oft brauchen Sie, um dieses set für einen Unterschied?
  • A und B sind arrays von Zeigern (64-bit), die auf dynamisch zugewiesenen Objekte im Speicher, und Sie sind definitiv nicht sortiert. (Kann ich irgendwie Zeiger?) Um genau zu sein, Einer ist Größe 32 und B ist Größe 8 und diese ganze Betrieb eingestellt differenzierende getan werden Zehntausende von Zeit.

InformationsquelleAutor Aamir | 2010-07-15
Schreibe einen Kommentar