Bazı dış değerlere göre sıralanmış öğelerden oluşan bir vektörüm var. Büyük bir konteynırdır ve sıralama değerine bakmak nispeten pahalıdır. Bir noktada bir elemanın (sadece) yeniden sıralanması gerekir. Bu elemanı yeniden sıralamak için en etkili yol nedir? std::sort()
vektörü mü? Elementi silmek? Öğeyi yakın komşularıyla karşılaştırır mısınız?Vektörde bir elemanı sıralamak için en etkili yol?
DÜZENLEME:
// erase the key and then insert-sort it
auto iter = std::find(keys.begin(), keys.end(), key);
keys.erase(iter);
SortedInsert(keys, index, <cmp>);
EDIT2: tarafından netleştirmek için böyle bir şey demek eleman silme takın konteyner diğer performans nedenleriyle
için bir vektör olması gerekiyor
Mevcut bir sıralanmış vektöre bir değer eklemek mi istiyorsunuz? – EvilTeach
En kötü durum O (n) karmaşıklığıdır (bir eleman sondan başa doğru hareket eder) - muhtemelen başka bir veri yapısını (belki 'std :: set'?) Istersiniz – milleniumbug
Sıralı vektörün argümanı için "set", ilginç bir yazı: http://asawicki.info/news_1352_the_beauty_of_sorted_arrays.html –