Sort

Matris veya vektörü yerinde sıralar

void vector::Sort(
  func_name  compare_func=NULL // karşılaştırma fonksiyonu
  T          context             // özel sıralama fonksiyonu için parametre
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // karşılaştırma fonksiyonu
  T          context             // özel sıralama fonksiyonu için parametre
   );
 
void matrix::Sort(
  const int  axis,               // sıralama için eksen
  func_name  compare_func=NULL   // karşılaştırma fonksiyonu
  T          context             // özel sıralama fonksiyonu için parametre
   );

Parametreler

axis

[in]  Sıralamanın gerçekleştirileceği eksen: 0 yatay, 1 dikey.

func_name

[in]  Karşılaştırıcı. ENUM_SORT_MODE numaralandırma değerlerinden birini veya kendi karşılaştırma fonksiyonunuzu belirtebilirsiniz. Herhangi bir fonksiyon belirtilmezse, artan sıralama kullanılır.
 
Özel karşılaştırma fonksiyonu şu iki türde olabilir:

  • int comparator(T x1,T x2)
  • int comparator(T x1,T x2,TContext context)

Burada T, matris veya vektörün türüdür, TContex ise Sort metoduna ek bir parametre olarak iletilen context değişkeninin türüdür.

context

[in] Özel sıralama fonksiyonuna iletilebilen isteğe bağlı ek parametre.

Geri dönüş değeri

Yok. Sıralama yerinde gerçekleştirilir, yani Sort metodunun çağrıldığı matris/vektörün verilerine uygulanır.

Örnek:

//+------------------------------------------------------------------+
//| Sıralama fonksiyonu                                              |
//+------------------------------------------------------------------+
int MyDoubleComparator(double x1,double x2,int sort_mode=0)
  {
   int res=x1<x2 ? -1 : (x1>x2 ? 1 : 0);
   return(sort_mode==0 ? res : -res);
  }
//+------------------------------------------------------------------+
//| Komut dosyası başlatma fonksiyonu                                |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- vektörü doldur
   vector v(100);
   //--- artan düzende sırala
   v.Sort(MyDoubleComparator);   // burada varsayılan değeri 0 olan ek parametre kullanılır
   Print(v);
   // azalan düzende sırala
   v.Sort(MyDoubleComparator,1); // burada ek parametre olarak 1 değeri kullanıcı tarafından açıkça belirtilir
   Print(v);
  }