Cancellare un array di elementi definiti - pagina 17

 
Алексей Тарабанов:

Non prendere in giro la gente

Non ha nemmeno iniziato ;-)

Non ho nemmeno menzionato il "checksum" quando c'è un benchmark.

Si può ricordare l'asintotica, con la quale si stima finalmente la velocità.
E che dipende dalla quantità di dati in ingresso, dal numero di elementi da rimuovere e dalla loro posizione/distribuzione (che in realtà non è MAI uniforme).

e che i grafici possono/devono essere tracciati.

l'obiettivo non vale certo la pena, ma in qualche modo la metodologia dovrebbe essere seguita

Potrei continuare per altre due o tre pagine :-)

 

Aggiunta la rotazione, le pause e l'opzione di riscaldamento (il primo passaggio non viene contato)

File:
 
Stanislav Dray:

Ho aggiunto una variante con rotazione, pause e riscaldamento (il primo passaggio non è preso in considerazione)

È strano che molti esempi non possano funzionare correttamente con le strutture... Forse non capisco qualcosa...

 
Vladimir Pastushak:

È strano che molti esempi non possano funzionare correttamente con le strutture... Forse non capisco qualcosa...

Sbarazzarsi delle strutture a favore delle classi. Sono più facili da lavorare in MQL.

 
Vladimir Pastushak:

È strano che molti esempi non possano funzionare correttamente con le strutture... Forse non capisco...

Cosa vuoi dire? Non so cosa intendi. Quali esempi non funzionano bene? Tutto funziona.

1

 
Vladimir Pastushak:

È strano che molti esempi non possano funzionare correttamente con le strutture... Forse non capisco qualcosa...

Le funzioni non sanno quale campo della struttura deve essere confrontato.

 
Dmitry Fedoseev:

La funzione non sa quale campo della struttura deve essere confrontato.

La funzione è il confronto per campi. Il risultato è la cancellazione dell'ultimo elemento dell'array per qualche motivo.

 
Ho capito, era il campo che si spostava nella stringa, non l'intera struttura...
 
Nikolai Semko:

Studiate il codice.

Ho controllato il tuo codice. Hai fatto tutto bene.

Non capisco perché questa linea prenda la maggior parte del mio tempo:

//+------------------------------------------------------------------+
int PeterArray(int &Arr[],const int val) // вариант Peter Konow
  {
   int deleted=0,q=0;
   for(int a1=0; a1<ArraySize(Arr); a1++)
     {
      if(deleted)Arr[q]=Arr[q+deleted];
      if(Arr[q]==val){deleted++; q--;} <-----------Выполнение этих операций занимает кучу времени.
      q++;
     }
   ArrayResize(Arr,q);
   return (q);
  }
//+------------------------------------------------------------------+

Senza quella linea, il codice viene eseguito in 2 microsecondi. Ma non si può fare senza.

Forse non è la soluzione più veloce, ma è una delle più concise.


SZY. Hai fatto un errore quando hai scritto la funzione dalla mia soluzione:

La mia funzione non è

ArrayResize(Arr,q);

а

ArrayResize(Arr,ArraySize(Arr) - deleted);

Ma grazie comunque.

 
Vladimir Pastushak:

La funzione sta confrontando i campi. Il risultato è che, per qualche motivo, l'ultimo elemento dell'array viene cancellato.

Quando si assegna un elemento a un altro, cioè quando si usa il segno "="?

Ho notato che è meglio fare le proprie copie. Non si può fare affidamento su nulla.

Motivazione: