Optimização dos algoritmos. - página 8

 
Tente algo mais interessante.
graph sin t^2 - Wolfram|Alpha
  • www.wolframalpha.com
x
 
Considero o tópico de encontrar um extremo encerrado.
 

Pesquisei em toda a Internet à procura de uma ordenação de cordas http://ru.wikipedia.org/wiki/Быстрая_сортировка.

Acabei por redesenhar o QuickSort para se adequar a um conjunto de cordas.

Gostaria também de incluir um modo para descartar registos únicos.

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) обменов...
 
Saudações!
Estou atolado com a lógica do algoritmo para sincronizar o histórico do tick de dois ou mais símbolos, para que cada momento no tempo tenha um preço, sugestão, colegas, do símbolo correspondente.
 
Andrey Dik:
Saudações!
Estou atolado com a lógica do algoritmo para sincronizar o histórico do tick de dois ou mais símbolos, para que cada momento no tempo tenha um preço, sugestão, colegas, do símbolo correspondente.
Conhece o iBarShift?
 
Vladimir Tkach:
Conhece o iBarShift?
Eu sei, como é que isso me vai ajudar?
 
Andrey Dik:
Saudações!
Estou atolado com a lógica do algoritmo para sincronizar o histórico do tick de dois ou mais símbolos, de modo que cada momento no tempo teria um preço correspondente do símbolo, sugestão, colegas.
Se bem entendi: estou a pensar fazer isto - parti-lo em objectos separados por dias, de modo a que cada armazém armazene conjuntos de carraças de todos os símbolos, (pois cada dia não são tantas carraças), e depois apenas de ordenadas por matriz de tempo dar por pedido "menor ou igual".
 
Criar uma matriz adicional. Escreva o tempo de todos os caracteres que lá se encontram. Ordenar em ordem ascendente. Remover as duplicações. Sincronizar as ferramentas utilizando esta matriz. Se não houver uma correspondência exacta, demore o tempo do tique mais próximo.
 
Rorschach:
Criar uma matriz adicional. Aí se escreve o tempo a partir de todos os símbolos. Ordenar em ordem ascendente. Remover as duplicações. Sincronizar as ferramentas utilizando esta matriz. Se não houver uma correspondência exacta, demore o tempo do tique mais próximo.
Sim, foi o que eu fiz.
mas há frequentemente carraças no mesmo personagem com o mesmo tempo, quando há várias carraças num milissegundo
É aqui que eu fico preso na lógica.
 
Andrey Dik:
Sim, foi o que eu fiz.
mas há frequentemente carraças no mesmo personagem com o mesmo tempo, quando há várias carraças num milissegundo
É aí que eu fico preso na lógica.

Pode pensar nalgumas opções. Tomar o preço médio por ms. Tomar o último preço por ms. Aumentar artificialmente a resolução para µs, por exemplo, 3 tiquetaques vieram em um ms, fazer o tempo do primeiro tique 10µs, do segundo 20µs, etc. Perde-se informação sobre o tempo, não há melhor opção. Tomar o último preço seria o mais habitual, como se as barras de milissegundos funcionassem.