Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 6
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Farklı kelimeler alfabenin aynı harfiyle başlar. Bir önceki sözlüğümüze "elma" kelimesini koyarsak ve sonra oraya "uygulama" koymaya çalışırsak, ondan hiçbir şey çıkmaz. Dizin 0 zaten elma kelimesi tarafından işgal edilecektir. Bu durumda, bir hash fonksiyonu çarpışmasından söz edilir. Karma işlevimiz çok basittir - kelimenin ilk karakterinin numarasını döndürür, bu nedenle bu işlevdeki çarpışmalar çok sık olacaktır. Aynı harfle başlayan farklı kelimeleri saklamak için bir ekleme yapacağız: elemanları bir dizide değil, bir dizi dizisinde saklayacağız. Ardından, 0 dizininde iki kelime içeren başka bir dizi olacaktır: "elma" ve "uygulama":
Artık sözlüğümüz aynı harfle başlayan kelimeleri bile saklıyor. Ancak ilk harfi aynı olan kelimelere erişim fiyatı artıyor. Çünkü artık 'application' kelimesinin sözlükte olup olmadığını anlamak için 'a' ile başlayan tüm kelimelerin tam olarak aranması gerekiyor. Eğer hash fonksiyonumuz, kelimeler bir karakter ile farklılık gösterse bile farklı sayılar üretseydi, aynı indekse sahip kelimeler üzerinde yineleme olasılığı sıfıra ve rastgele bir öğeye erişim o(1) eğilimine girerdi . Bu tam olarak gerçek sözlüklerde olan şeydir, orada kullanılan fonksiyonlar çarpışmalara karşı dayanıklıdır, bu yüzden kesinlikle bu koleksiyonlardaki öğelere erişimin çok hızlı ve neredeyse numaralandırma olmadan olduğunu söyleyebiliriz.
Geçenlerde konuyla ilgili bir kitap okudum. Buna " Gcking Algoritmaları " denir. Her şey örneklerle çok net bir şekilde ifade edilmiştir.
Aşağıdaki örnekte, aynı harfle başlayan kelimeleri depolayabilmesi için onu iyileştireceğiz.
Şapka ve gereksiz varlıklar şeklinde ayak örtüsü olmadan kısa ve öz yazmak için büyük bir istek.
Örneğin, bu
çok daha açık yazılabilirdi
Yine de, MT4/5 için bu kod farklı şekillerde çalışabilir, çünkü. MT4'te dizi NULL değerlerle başlatılır ve MT5'te çöp olabilir.
Şapka ve gereksiz varlıklar şeklinde ayak örtüsü olmadan kısa ve öz yazmak için büyük bir istek.
...
şiddetle KARŞI! Kodun ayrıntılı olarak yazılması arzu edilir. Tüm MQ kodlarına bakın - her yerde "büyük harfler" var. Bu standart.
...
Yine de, MT4/5 için bu kod farklı şekillerde çalışabilir, çünkü. MT4'te dizi NULL değerlerle başlatılır ve MT5'te çöp olabilir.
Peki ya eski terminal? Kim tembel ve hala yaşlı oturuyor - bunlar sadece onun kişisel sorunları. Bu tür tembellikler yüzünden toplum yavaşlamamalı.
Tüm MQ kodlarına bakın - her yerde "büyük harfler" var. Bu standart.
Fırında standart, burada kodun% 50'sini kaplayan stil değil, öz önemlidir.
Fırında standart, burada kodun% 50'sini kaplayan stil değil, öz önemlidir.
Forumun ana görevi EĞİTİM'dir. Bu nedenle, kod, standarda mümkün olduğunca yakın genişletilmeli ve anlaşılabilir olmalıdır.
Bu tam olarak gerçek sözlüklerde olan şeydir, orada kullanılan fonksiyonlar çarpışmalara karşı dayanıklıdır, bu yüzden kesinlikle bu koleksiyonlardaki öğelere erişimin çok hızlı ve neredeyse numaralandırma olmadan olduğunu söyleyebiliriz.
Onlar. her görev için sözlüğün boyutu (RAM) ile karma işlevinin (CPU) hesaplama karmaşıklığı arasında bir orta yol bulmanız gerekir.
Forumun ana görevi EĞİTİM'dir. Bu nedenle, kod genişletilmeli ve anlaşılır olmalıdır.
Yeter.
standarda mümkün olduğunca yakın.
Kendi şapkalarınızı takabilirsiniz. A100, SD'de kapaksız yüzlerce rapor yayınladı - standart bu! Çünkü öz önemlidir, tinsel değil.
Bir çözüm var. Ancak, entrikayı geçici olarak tutmak için buraya bir yürütülebilir dosya koymak istiyorum. Ayrıca, yetenekli kişiler benim çözümümün performansını ve yukarıdaki yazar tarafından sağlanan çözümü karşılaştıracaktır. Neyin daha hızlı çalıştığını merak ediyorum.