Optimisation des algorithmes. - page 8

 
Essayez quelque chose de plus intéressant.
graph sin t^2 - Wolfram|Alpha
  • www.wolframalpha.com
x
 
Je considère que le sujet de la recherche d'un extremum est clos.
 

J'ai cherché sur tout l'Internet le tri de tableaux de chaînes de caractères http://ru.wikipedia.org/wiki/Быстрая_сортировка.

J'ai fini par redessiner QuickSort pour l'adapter à un tableau de chaînes de caractères.

J'aimerais également inclure un mode de suppression des enregistrements uniques.

int OnInit()
{
string N[8];
N[0]="123";
N[1]="asdfgg";
N[2]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5";
N[3]="548";
N[4]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6";
N[5]="***";
N[6]="asdfg";
N[7]="+++++";
StrQuickSort(N);
Comment(
N[0]+"\n",
N[1]+"\n",
N[2]+"\n",
N[3]+"\n",
N[4]+"\n",
N[5]+"\n",
N[6]+"\n",
N[7]
);


return(0);
}

void StrQuickSort(string &A[])
{
QuickSort(A,0,ArrayRange(A,0)-1);
}
//void QuickSort(double &A[],int &r[],int from,int to)
//void CLONGArray::QuickSort(long &m_data[],Cint2D &index,int beg,int end,bool mode=0)
void QuickSort(string &A[],int from,int to)
  {
   int i,j;//,itemp;
   string x,temp;
   if(from>=to)return;
   i=from;
   j=to;
   x=A[(from+to)>>1];
   while(i<=j)
     {
      while(A[i]<x)i++; 
      while(A[j]>x)j--;
      if(i<=j)
        {
         temp=A[i]; A[i]=A[j]; A[j]=temp;
         //itemp=r[i]; r[i]=r[j]; r[j]=itemp;
         i++;
         j--;
        }
     }
   QuickSort(A,from,j);
   //QuickSort(A,r,from,j);
   QuickSort(A,i,to);  
   //QuickSort(A,r,i,to);
  }
Быстрая сортировка — Википедия
  • ru.wikipedia.org
Быстрая сортировка (англ.  ), часто называемая qsort по имени реализации в стандартной библиотеке языка Си — широко известный алгоритм сортировки, разработанный английским информатиком Чарльзом Хоаром во время его работы в МГУ в 1960 году. Один из самых быстрых известных универсальных алгоритмов сортировки массивов (в среднем O(n log n) обменов...
 
Salutations !
Je suis bloqué par la logique de l'algorithme de synchronisation de l'historique des tics de deux ou plusieurs symboles, de sorte que chaque moment dans le temps aurait un prix de symbole correspondant, une suggestion, des collègues.
 
Andrey Dik:
Salutations !
Je suis bloqué par la logique de l'algorithme de synchronisation de l'historique des tics de deux ou plusieurs symboles, de sorte que chaque moment dans le temps aurait un prix de symbole correspondant, une suggestion, des collègues.
Connaissez-vous l'iBarShift ?
 
Vladimir Tkach:
Connaissez-vous l'iBarShift ?
Je sais, comment ça va m'aider ?
 
Andrey Dik:
Salutations !
Je m'embourbe dans la logique de l'algorithme de synchronisation de l'historique des tics de deux ou plusieurs symboles, de sorte que chaque moment dans le temps aurait un prix de symbole correspondant, une suggestion, des collègues.
Si j'ai bien compris : je pense faire ceci - le séparer en objets distincts par jours, de sorte que chacun stocke des tableaux de ticks de tous les symboles, (pour chaque jour, il n'y a pas tant de ticks), et ensuite juste à partir du tableau trié par temps donner par demande "inférieur ou égal".
 
Créez un tableau supplémentaire. Écrivez l'heure de tous les personnages qui s'y trouvent. Trier dans l'ordre croissant. Supprimez les doublons. Synchronisez les outils en utilisant ce tableau. S'il n'y a pas de correspondance exacte, prenez le temps de la tique la plus proche.
 
Rorschach:
Créez un tableau supplémentaire. On y écrit le temps de tous les symboles. Trier dans l'ordre croissant. Supprimez les doublons. Synchronisez les outils en utilisant ce tableau. S'il n'y a pas de correspondance exacte, prenez le temps du tic-tac le plus proche.
Oui, c'est ce que j'ai fait.
mais il y a souvent des ticks sur le même personnage avec le même temps, quand il y a plusieurs ticks dans une milliseconde
C'est là que je suis coincé dans la logique.
 
Andrey Dik:
Oui, c'est ce que j'ai fait.
mais il y a souvent des ticks sur le même personnage avec le même temps, quand il y a plusieurs ticks dans une milliseconde
C'est là que je suis coincé dans la logique.

Vous pouvez penser à quelques options. Prenez le prix moyen par ms. Prenez le dernier prix par ms. Augmentez artificiellement la résolution en µs, par exemple si 3 ticks sont survenus en une ms, faites en sorte que le temps du premier tick soit de 10µs, le second de 20µs, etc. Si l'information est perdue, il n'y a pas de meilleure option. Prendre le dernier prix serait le plus habituel, comme le feraient des barres de millisecondes.