MA beslemesinin birikiminin tespiti nasıl algoritmalaştırılır? - sayfa 7

 
Aleksey Nikolayev :
MathQuantile() neden kullanılamıyor?
Muhtemelen. Her çubukta medyanları aramanız gerekiyorsa, neyin daha hızlı olduğuna bakmanız gerekir: sıralı bir diziyi koruyun veya bu işlevi kullanın.
 
Aleksey Nikolayev :
MathQuantile() neden kullanılamıyor?

Bu fonksiyondaki "olasılık dizisi" nedir - nasıl doldurulur?

 
İşte bir dizinin bir dizine göre nasıl sıralanacağını öneren biri. etkili!)
 
Mikhail Toptunov :
İşte bir dizinin bir dizine göre nasıl sıralanacağını öneren biri. etkili!)

Dizini diziye atın. Boyut yalnızca diziyi artıracaktır.

 

Mikhail, sıralı tutmak için uzun süre bir diziye yeni bir değer eklemek için bir fonksiyon yazdı.

Yani diziye yapılan tüm eklemeler bu fonksiyon aracılığıyla yapılmalıdır:

 //находим место для значения в отсортированном массиве и записываем его туда
void SetValueInSortArray( double &eArray[], double eValue)
   {
   //находим индекс, куда будем вставлять элемент
   int eFinish= ArrayRange (eArray, 0 )- 1 ;
   int eIndex;
   if (eFinish==- 1 )
      {
      eIndex= 0 ;
      }
   else if ( NormalizeDouble (eArray[eFinish]-eValue, 8 )< 0 )
      {
      eIndex=eFinish+ 1 ;
      }
   else
      {
       int eLower= 0 ;
       int eUpper=eFinish;
      eIndex= 0 ;
       while (eLower<=eUpper)
         {
         eIndex=(eLower+eUpper)/ 2 ;
         if ( NormalizeDouble (eArray[eIndex]-eValue, 8 )>= 0 )
            {
             if (eIndex> 0 && NormalizeDouble (eArray[eIndex- 1 ]-eValue, 8 )< 0 )
               {
               break ;
               }
             else
               {
               eUpper=eIndex- 1 ;
               }
            }
         if ( NormalizeDouble (eArray[eIndex]-eValue, 8 )< 0 )
            {
            eLower=eIndex+ 1 ;
            }
         }
      }
   //вставка элемента в начало массива
   if (eIndex== 0 )
      {
       if ( ArrayRange (eArray, 0 )== 0 )
         {
         ArrayResize (eArray, 1 );
         }
       else
         {
         ArrayCopy (eArray,eArray, 1 , 0 );
         }
      }
   //вставка элемента в конец массива
   else if (eIndex>= ArrayRange (eArray, 0 ))
      {
       ArrayResize (eArray,eIndex+ 1 );
      }
   //вставка элемента в середину массива
   else
      {
       ArrayCopy (eArray,eArray,eIndex,eIndex- 1 );
      }
   eArray[eIndex]=eValue;
   }  
İkili arama kullanılır, hızlı olmalıdır.
 
Mikhail Toptunov :
İşte bir dizinin bir dizine göre nasıl sıralanacağını öneren biri. etkili!)

İki boyutlu dizi, ArraySort() işlevi .

 
Hayır, bir eleman için yer bulmak ve tüm diziyi sıralamak çok farklı bir zamandır.
 
Aleksey Vyazmikin :

Bu fonksiyondaki "olasılık dizisi" nedir - nasıl doldurulur?

Hangi niceliklerin hesaplanması gerekiyor, örneğin:

{0.5} - ortanca

{0,25, 0,5, 0,75} - çeyrekler

{0.01, 0.02, ..., 0.99} - yüzdelikler

 
Mikhail Toptunov :
İşte bir dizinin bir dizine göre nasıl sıralanacağını öneren biri. etkili!)

MathQuickSort()'u deneyin

 
Mikhail Toptunov :

Misal:

30 MA fiyat değerinden oluşan bir dizi , sıralı dizinin ortasını arıyoruz.

15(L0) dizinin ortasının değerini alıyoruz, sonra L0'dan aşağı ve L0'dan yukarı iki dizi alıyoruz, bu dizilerin ortasını buluyoruz ve böylece odak sayısını elde edene kadar (yedi değer için yedi değer) misal)

ve sonunda işaretleyecek

cevap basit - matematiksel işleme yanıltıcı