Ich habe den folgenden Code geschrieben, um zu versuchen, einen Einsatz in einem sortierten Vektor in O (log n) Laufzeit auszuführen:Verbesserung der Laufzeit Komplexität der Einfügesortierung?
std::vector<int> to_insert_sort {2,3,5,6,1,1,3,2};
int to_insert {3};
std::sort(to_insert_sort.begin(), to_insert_sort.end()); //O(log n)
auto pos = std::upper_bound(to_insert_sort.begin(), to_insert_sort.end(), 5); //O(log n)
to_insert_sort.insert(pos, to_insert); //O(n)
1) Ich sage, diese Operation O (log stimmt Bin n)
2) Gibt es Möglichkeiten, diesen Vorgang mit erhöhter Laufzeit-Effizienz durchzuführen?
Die Komplexität der 'std :: sort' ist nicht' O (log n) ', es ist' O (n * log n) '. Siehe http://en.cppreference.com/w/cpp/algorithm/sort. Also ich denke, die Operation ist 'O (n * log n)' Ich denke, – Rakete1111
ist diese Hausaufgabe? –