Şu anda, hangisinin eşleştiğini bulmak için her bir tamsayı öğesini birbirine göre test ediyorum. Diziler kendi kümeleri içinde çoğaltmaları içermez. Ayrıca, diziler her zaman eşit uzunluklarda değildir. Bunu hızlandırmak için herhangi bir hile var mı? Bunu binlerce kez yapıyorum, bu yüzden programımda C# olan bir şişe boynu olmaya başlıyor.Diziler arasındaki eşleşme sayısını bulmanın en hızlı yolu nedir?
cevap
kullanın HashSet
var set = new HashSet<int>(firstArray);
set.IntersectWith(secondArray);
seti şimdi her iki dizide de mevcut değerleri içerir.
var query = firstArray.Intersect(secondArray);
Ya diziler zaten sıralanır takdirde iki diziler için kendini yineleme:
Bence istediğin gibi .Intion yerine .Union –
Ahh beyin osuruk! Teşekkürler. Düzenledim. – Josh
HashSet'i IntersectWith ile denediniz ve tüm öğeler üzerinde yinelemeye kıyasla iki kat daha yavaş. –
Sen LINQ kullanabilirsiniz
int[] a = { 1, 3, 5 };
int[] b = { 2, 3, 4, 5 };
List<int> result = new List<int>();
int ia = 0;
int ib = 0;
while (ia < a.Length && ib < b.Length)
{
if (a[ia] == b[ib])
{
result.Add(a[ia]);
ib++;
ia++;
}
else if (a[ia] < b[ib])
{
ia++;
}
else
{
ib++;
}
}
@Mark: Kodunuz sessizce dizilerin dizildiğini varsayalım. – Vlad
John dizilerin yukarıdaki yorumlarda sıralandığını belirtmişti. –
böyle bir karşılaştırma programınızda bir darboğaz ise, uygun olmayan bir veri yapısı kullanıyor olabilirsiniz. Verilerinizi sıralamak için en basit yol olabilir. Sonra ortak girişleri bulmak için, her iki dizinin sadece bir kez çaprazlanması gerekir. Başka bir seçenek de verileri bir HashSet'te tutmaktır.
- 1. TabActivity'deki Sekmelerin sayısını bulmanın en iyi yolu nedir?
- 2. Jmeter'da en iyi yolu bulmanın en iyi yolu nedir?
- 3. Python'da özdeğerleri/vektörleri bulmanın en hızlı yolu nedir?
- 4. Listede bir öğeyi bulmanın en hızlı yolu?
- 5. ArrayList'ten verileri filtrelemenin en hızlı yolu nedir?
- 6. Kompakt Çerçevede geliştirirken tüm belleğinizi bulmanın en iyi yolu nedir?
- 7. Windows form uygulamasında bellek sızıntılarını bulmanın en iyi yolu nedir?
- 8. InNet, bir kök dizinden tüm dosyaları yinelemeli olarak bulmanın en hızlı yolu nedir?
- 9. Büyük ağlar ölçeğinde iki düğüm arasındaki olası tüm yolları bulmanın en iyi yolu nedir?
- 10. En içteki istisnayı bulmanın doğru yolu?
- 11. Sayısal dizide modu bulmanın en verimli yolu
- 12. En Hızlı Yolu
- 13. Diziler dizisi üzerinde yinelemenin en basit yolu nedir?
- 14. ASPNET MVC: Yönlendiricinin yolunu bulmanın yolu nedir?
- 15. Facebook'umu uygulama gönderilerimden bulmanın yolu nedir?
- 16. Yinelenen yinelemede yinelenen yineleme sayısını bulmanın bir yolu var mı?
- 17. Google Chrome'daki sekmeler arasındaki en hızlı iletişim nedir?
- 18. Bir Diziye Öğe eklemenin en hızlı yolu
- 19. Büyük bir tablodan benzer değer bulmanın en iyi yolu
- 20. Ana iş parçacığını engelleyen bir kod bulmanın en iyi yolu nedir?
- 21. Bir veri çerçevesine CSV çıkışı almanın en hızlı yolu nedir?
- 22. Scala dosyalarını maven kullanarak derlemenin en hızlı yolu nedir?
- 23. Octave'de bir metin dosyasına matris yazmanın en hızlı yolu nedir?
- 24. Bir panda DataFrame'ı seçmenin en hızlı yolu nedir?
- 25. R'de çoklu mantıksal karşılaştırma yapmanın en hızlı yolu nedir?
- 26. Modern Windows'da HWND'ye çizmenin en hızlı yolu nedir?
- 27. Win32 API'sinde biçimlendirilmiş metin çizmenin en hızlı yolu nedir?
- 28. Dizilere dayalı değişkenler atamanın en hızlı yolu nedir?
- 29. ASP.NET'te, istek için URl tabanını almanın en hızlı yolu nedir?
- 30. Excel Range nesnesini geriye doğru yürümenin en hızlı yolu nedir?
Her iki dizide var olan tüm tam sayıların benzersiz bir listesini istediğiniz gibi mi? – Thomas
Thomas'ın yorumuna eklemek için sıralı diziler mi? –
Bunu koymak için başka bir yol olurdu. Her iki kümede ortak olan benzersiz bir liste. Evet, sipariş ediliyorlar. –