Wie kann man am besten überprüfen, ob ein std::vector
sortiert ist? Gibt es etwas Schnelleres als eine Schleife, die prüft, ob v[i]<=v[i+1]
? Ist es schneller/sauberer mit Iteratoren? Oder ist es tatsächlich besser, einfach die sort
jedes Mal (obwohl der Fall "v ist bereits sortiert" recht häufig vorkommt)?
Wir können sicher davon ausgehen, dass der Vektor nur PODs enthält, in der Regel float
s und manchmal double
s und int
s.
Die Größe des Vektors ist nicht trivial (in der Regel einige tausend Elemente), aber nicht extrem (keine Gigabyte-Größe).
- In einigen Fällen sortieren wir den Vektor unmittelbar danach, in anderen Fällen jedoch nicht (das ist ein Fehlerfall unseres Algorithmus).
- wir verwenden bereits ein Flag "IsSorted", wann immer dies möglich ist.
0 Stimmen
Sortieren Sie sofort aus, wenn nicht sortiert wird? Das könnte einen Unterschied machen.