Ottimizzazione degli algoritmi. - pagina 8

 
Prova qualcosa di più interessante.
graph sin t^2 - Wolfram|Alpha
  • www.wolframalpha.com
x
 
Considero chiuso l'argomento della ricerca di un estremo.
 

Ho cercato in tutto l'Internet cercando l'ordinamento di array di stringhe http://ru.wikipedia.org/wiki/Быстрая_сортировка.

Ho finito per riprogettare QuickSort per adattarlo ad un array di stringhe.

Vorrei anche includere una modalità per scartare i record unici.

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) обменов...
 
Saluti!
Sono impantanato con la logica dell'algoritmo per sincronizzare la storia dei tick di due o più simboli, in modo che ogni momento nel tempo avrebbe un prezzo del simbolo corrispondente, suggerimento, colleghi.
 
Andrey Dik:
Saluti!
Sono impantanato con la logica dell'algoritmo per sincronizzare la storia dei tick di due o più simboli, in modo che ogni momento nel tempo avrebbe un prezzo del simbolo corrispondente, suggerimento, colleghi.
Conosci iBarShift?
 
Vladimir Tkach:
Conosci iBarShift?
Lo so, come mi aiuterà?
 
Andrey Dik:
Saluti!
Sono impantanato con la logica dell'algoritmo per sincronizzare la storia dei tick di due o più simboli, in modo che ogni momento nel tempo avrebbe un prezzo del simbolo corrispondente, suggerimento, colleghi.
Se ho capito bene: sto pensando di fare questo - rompere in oggetti separati per giorni, in modo che ogni negozi array di tick di tutti i simboli, (per ogni giorno non è così tanti tick), e poi solo da ordinati per array tempo dare per richiesta "meno o uguale".
 
Creare una matrice aggiuntiva. Scrivi il tempo di tutti i personaggi presenti. Ordina in ordine crescente. Rimuovere i duplicati. Sincronizza gli strumenti usando questo array. Se non c'è una corrispondenza esatta, prendete il tempo della zecca più vicina.
 
Rorschach:
Creare una matrice aggiuntiva. Lì scrivi il tempo da tutti i simboli. Ordina in ordine crescente. Rimuovere i duplicati. Sincronizza gli strumenti usando questo array. Se non c'è una corrispondenza esatta, prendete il tempo della zecca più vicina.
Sì, è quello che ho fatto.
ma ci sono spesso tick sullo stesso carattere con lo stesso tempo, quando ci sono diversi tick in un millisecondo
È qui che mi blocco nella logica.
 
Andrey Dik:
Sì, è quello che ho fatto.
ma ci sono spesso tick sullo stesso carattere con lo stesso tempo, quando ci sono diversi tick in un millisecondo
È qui che mi blocco nella logica.

Si possono pensare alcune opzioni. Prendete il prezzo medio per ms. Prendete l'ultimo prezzo per ms. Aumentare artificialmente la risoluzione in µs, ad esempio 3 tick sono arrivati in un ms, rendere il tempo del primo tick 10µs, il secondo 20µs, ecc. Le informazioni sul tempo si perdono, non c'è un'opzione migliore. Prendere l'ultimo prezzo sarebbe il più usuale, come le barre di millisecondi.

Motivazione: