Optimierung von Algorithmen. - Seite 8

 
Versuchen Sie etwas Interessanteres.
graph sin t^2 - Wolfram|Alpha
  • www.wolframalpha.com
x
 
Ich betrachte das Thema der Suche nach einem Extremum als abgeschlossen.
 

Ich habe das ganze Internet nach der Sortierung von String-Arrays durchsucht http://ru.wikipedia.org/wiki/Быстрая_сортировка.

Am Ende habe ich QuickSort so umgestaltet, dass es für ein String-Array geeignet ist.

Ich würde auch gerne einen Modus zum Verwerfen eindeutiger Datensätze einfügen.

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) обменов...
 
Grüße!
Ich bin mit der Logik des Algorithmus für die Synchronisierung der Tick-Historie von zwei oder mehr Symbolen, so dass jeder Moment in der Zeit würde ein entsprechendes Symbol Preis, Vorschlag, Kollegen haben verzettelt.
 
Andrey Dik:
Grüße!
Ich bin mit der Logik des Algorithmus für die Synchronisierung der Tick-Historie von zwei oder mehr Symbolen, so dass jeder Moment in der Zeit würde ein entsprechendes Symbol Preis, Vorschlag, Kollegen haben verzettelt.
Kennen Sie iBarShift?
 
Vladimir Tkach:
Kennen Sie iBarShift?
Ich weiß, wie soll mir das helfen?
 
Andrey Dik:
Grüße!
Ich bin mit der Logik des Algorithmus für die Synchronisierung der Tick-Historie von zwei oder mehr Symbolen, so dass jeder Moment in der Zeit würde ein entsprechendes Symbol Preis, Vorschlag, Kollegen haben verzettelt.
Wenn ich es richtig: Ich denke, dies zu tun - brechen Sie es in separate Objekte nach Tagen, so dass jeder speichert Arrays von Ticks aller Symbole, (für jeden Tag ist nicht so viele Ticks), und dann nur von sortiert nach Zeit-Array geben durch Anforderung "weniger oder gleich".
 
Erstellen Sie ein zusätzliches Array. Schreiben Sie die Zeit von allen Zeichen dort auf. In aufsteigender Reihenfolge sortieren. Duplikate entfernen. Synchronisieren Sie die Werkzeuge mit diesem Array. Wenn es keine exakte Übereinstimmung gibt, wird die Zeit der nächstgelegenen Zecke genommen.
 
Rorschach:
Erstellen Sie ein zusätzliches Array. Dort schreiben Sie die Zeit aus allen Symbolen. In aufsteigender Reihenfolge sortieren. Duplikate entfernen. Synchronisieren Sie die Werkzeuge mit diesem Array. Wenn es keine exakte Übereinstimmung gibt, wird die Zeit der nächstgelegenen Zecke genommen.
Ja, genau das habe ich getan.
aber es gibt oft Ticks auf dem gleichen Zeichen mit der gleichen Zeit, wenn es mehrere Ticks in einer Millisekunde gibt
An dieser Stelle bleibt die Logik für mich stecken.
 
Andrey Dik:
Ja, genau das habe ich getan.
aber es gibt oft Ticks auf dem gleichen Zeichen mit der gleichen Zeit, wenn es mehrere Ticks in einer Millisekunde gibt
Das ist der Punkt, an dem ich mit der Logik nicht weiterkomme.

Sie können sich mehrere Möglichkeiten vorstellen. Nehmen Sie den Durchschnittspreis pro ms. Nehmen Sie den letzten Preis pro ms. Erhöhen Sie die Auflösung künstlich auf µs, z. B. 3 Ticks kamen in einer ms, machen Sie die Zeit des ersten Ticks zu 10µs, die des zweiten zu 20µs, usw. Zeitinformationen gehen verloren, es gibt keine bessere Option. Am üblichsten wäre es, den letzten Preis zu nehmen, wie es bei Millisekundenbalken der Fall ist.