Articles of dell’algoritmo

calcolo dell’anno bisestile

Per trovare gli anni bisestili, perché l’anno deve essere indivisibile per 100 e divisibile per 400? Capisco perché deve essere divisibile per 4. Per favore spiega l’algoritmo.

Algoritmo per trovare la più piccola potenza di due che è maggiore o uguale a un valore dato

Devo trovare la più piccola potenza di due che sia maggiore o uguale a un dato valore. Finora, ho questo: int value = 3221; // 3221 is just an example, could be any number int result = 1; while (result < value) result <<= 1; Funziona bene, ma sembra un po ‘ingenuo. C’è un algoritmo […]

Stack con find-min / find-max più efficiente di O (n)?

Sono interessato a creare una struttura dati Java simile a uno stack che supporta le seguenti operazioni nel modo più efficiente ansible: Push, che aggiunge un nuovo elemento in cima allo stack, Pop, che rimuove l’elemento superiore della pila, Find-Max, che restituisce (ma non rimuove) l’elemento più grande della pila, e Find-Min, che restituisce (ma […]

Esistono metodi migliori per eseguire la permutazione della stringa?

void permute(string elems, int mid, int end) { static int count; if (mid == end) { cout << ++count << " : " << elems << endl; return ; } else { for (int i = mid; i <= end; i++) { swap(elems, mid, i); permute(elems, mid + 1, end); swap(elems, mid, i); } } […]

Approssimativi algoritmi di corrispondenza delle stringhe

Qui al lavoro, spesso abbiamo bisogno di trovare una stringa dall’elenco di stringhe che è la corrispondenza più vicina con un’altra stringa di input. Attualmente, stiamo usando l’algoritmo di Needleman-Wunsch. L’algoritmo restituisce spesso molti falsi positivi (se impostiamo il punteggio minimo troppo basso), a volte non trova una corrispondenza quando dovrebbe (quando il punteggio minimo […]

Prestazioni veloci: ordinamento di array

Stavo implementando un algoritmo in Swift e ho notato che la performance era molto scarsa. Dopo aver scavato più a fondo, mi sono reso conto che uno dei colli di bottiglia era qualcosa di semplice come l’ordinamento degli array. La parte rilevante è qui: let n = 1000000 var x = [Int](repeating: 0, count: n) […]

Algoritmo di ricerca prima della profondità non ricorsiva

Sto cercando un algoritmo di ricerca prima della profondità non ricorsiva per un albero non binario. Qualsiasi aiuto è molto apprezzato.

Algoritmo per separare elementi dello stesso tipo

Ho una lista di elementi, ognuno identificato con un tipo, ho bisogno di riordinare la lista per massimizzare la distanza minima tra elementi dello stesso tipo. Il set è piccolo (da 10 a 30 voci), quindi le prestazioni non sono molto importanti. Non c’è limite alla quantità di articoli per tipo o quantità di tipi, […]

Fast String Hashing Algorithm con basse velocità di collisione con numero intero a 32 bit

Ho molte cose senza nome che mi piacerebbe fare ricerche veloci contro. Un “aardvark” è sempre un “aardvark” ovunque, quindi tagliare la stringa e riutilizzare l’intero funzionerebbe bene per accelerare i confronti. L’intero set di nomi è sconosciuto (e cambia nel tempo). Che cos’è un algoritmo di hash della stringa veloce che genererà valori di […]

Divisione senza usare ‘/’

Qualcuno può dirmi un approccio efficiente per eseguire l’operazione di divisione senza usare ‘/’. Posso calcolare il valore intero nei passi log(n) usando un metodo simile alla ricerca binaria. 115/3 57 * 3 > 115 28 * 3 115 . . . 38 * 3 is quotient value ….. Ma esiste un altro metodo più […]