Okunan ve yazan dizi elemanının sayısını sayarız. Kabarcık sıralama yapmak için tek ihtiyacınız (o zaman, en kötü durumda, iki okur ve iki yazıyor yapmaya sonuna kadar ilk yazma erişimler takaslarını). İkili aramayı yapmak için, ( ikili arama için , en kötü durumda ise dizi öğelerini sağa kaydırmak için , dizi elemanını yazmak için 1n gerekir. onun uygun pozisyonu).n 2 log n + 2 n + 1 2 log n 2 n1 + 4 nn2 günlükn + 2 n + 12 günlükn2 n
Dolayısıyla, her iki yöntem de dizi uygulamaları için aynı karmaşıklığa sahiptir, ancak ikili arama yöntemi uzun vadede daha az dizi erişimi gerektirir ... asimptotik olarak, yarısı kadar. Doğal olarak oyunda başka faktörler de var.
Aslında, daha iyi uygulamalar kullanabilir ve yalnızca gerçek dizi erişimlerini satabilirsiniz (eklenecek öğeye erişemez). Sen yapabilirdi sıralama balonu için, ve (akıllı kabarcık kayıt / önbellek erişimi ucuz ve dizi erişim ucundan arama ve yol boyunca değişen, pahalı eğer öyleyse ... İkili arama için yerleştirme için sıralama) daha iyi olabilir, asimptotik olmasa da.günlüğü n + 2 n + 12 n + 1günlükn + 2 n + 1
Daha iyi bir çözüm, farklı bir veri yapısı kullanmayı içerebilir. Diziler size O (1) erişimlerini (rastgele erişim) verir, ancak eklemeler ve silme işlemleri maliyetli olabilir. Bir karma tablosunda O (1) ekler ve silmeler olabilir, erişimler maliyetli olur. Diğer seçenekler arasında BST'ler ve yığınlar, vb. Bulunur. Uygulamanızın ekleme, silme ve erişim için kullanım gereksinimlerini göz önünde bulundurarak daha özel bir yapı seçin.
Eklemek istediğiniz takdirde Ayrıca yürütülen sıralanmış bir diziye eleman elemanları, iyi bir fikir verimli sıralama nedeniyle olabilir daha sonra iki dizi birleştirme öğeler; ayrıca, diziler, örneğin yığınlar (yığın sıralaması) kullanılarak verimli bir şekilde oluşturulabilir., n mmnm