9 Stimmen

C++ Zahlen von klein nach groß sortieren

Wenn ich den Benutzer 10 Zufallszahlen eingeben lasse und sie von kleinster bis größter ordnen möchte, welche ist die beste Methode, dies unter Verwendung der grundlegendsten C++-Sprache zu tun.

5 Stimmen

21voto

Jerry Coffin Punkte 452852
std::vector zahlen;

// Hier die Zahlen vom Benutzer erhalten.

std::sort(zahlen.begin(), zahlen.end());

0 Stimmen

@Jerry: Warum nicht eine Struktur verwenden, die die Reihenfolge beibehält?

1 Stimmen

@Matthieu: Es ist wahrscheinlich schneller, das Sortieren nur einmal am Ende durchzuführen.

0 Stimmen

@kotlinski: Während ich dem zustimme und für kleine Eingabesets ein Vektor verwenden, scheint es doch eine voreilige Optimierung zu sein! Die asymptotische Leistung entspricht O(N log N), also strebst du hier nach einem konstanten Faktor, jedoch auf Kosten der Verkomplizierung des Codes.

14voto

pyfex Punkte 1165
#include 
#include 
#include 

using namespace std;

int main() {

    vector vec;

    vec.push_back(1);
    vec.push_back(4);
    vec.push_back(3);
    vec.push_back(2);

    sort( vec.begin(), vec.end() );

    for (vector::const_iterator it=vec.begin(); it!=vec.end(); ++it) {
      cout << *it << " ";
    }
    cout << endl;
    return 0;
}

2voto

Matthieu M. Punkte 266317

Verwenden Sie eine Struktur, die die Reihenfolge beibehält: std::multiset

#include 
#include 

#include 

int main(int argc, char* argv[])
{
  std::multiset set;

  for (int i = 1; i != argc; ++i) {
    set.insert(boost::lexical_cast(argv[i]));
  }

  for (int i: set) { std::cout << i << " "; }
  std::cout << "\n";
}

Aufruf:

$ yourprogram 1 5 4 6 7 82 6 7 8

(Anmerkung: Die Anzahl der Argumente ist nicht beschränkt)

1 Stimmen

for (int i: set) das sieht für mich nicht nach C++ aus.

2 Stimmen

@kotlinski: C++0x neu range-based for Anweisung (6.5.4 [stmt.ranged]), Ich weiß nicht, ob irgendein Compiler es bereits implementiert hat.

0voto

MM. Punkte 4134

Es hängt von Ihren Anforderungen ab. Wenn Sie sie nur sortieren möchten und Geschwindigkeit nur von mäßiger Bedeutung ist, wäre ein Einfügesortieralgorithmus für einen so kleinen n-Wert (10) in Ordnung. Schnell zu implementieren (von Grund auf neu) und geeignet für kleine Datensatzgrößen.

0voto

Leo Ivas Punkte 1
    //das ist das Sortieren von min nach max ohne Zeiger
    #include
    using namespace std;
    int main()
    {int n;
    cout<<"Wie viele Zahlen möchten Sie sortieren? "<>n;
    int broj[n];
    cout<<"Geben Sie Zahlen ein: "<>broj[k];
    }
    int min=0;
    for(int z=0;z

0 Stimmen

Versuche, eine Erklärung hinzuzufügen

1 Stimmen

So dies ist nur ein altes Programm mit einfachen if-, for- und goto-Schleifen.. der Kern dieses Programms liegt in dieser "i"-Schleife, die Zahlen an verschiedenen Indizes im Array ersetzt.. min ist eine Variable, die wir für einen einfacheren "Transport" dieser Werte verwenden.. alles in allem mein Rat, wenn Sie Visual Studio oder ein Programm haben, das schrittweise (Zeile für Zeile) ausgeführt werden kann, wird es Ihnen helfen, dieses Konzept zu verstehen.. es ist ein bisschen länger, aber damit werden Sie Ihre Programmierweise des Denkens weiterentwickeln

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X