Algoritmo di ricerca utilizzato nell'istruzione switch

1

Qual è l'algoritmo di ricerca utilizzato nell'istruzione switch in linguaggio C?

Se i casi non sono in ordine, continua a cercare casi appropriati, il che significa che non è un algoritmo di ricerca binaria, qualcuno può spiegare?

    
posta Guruprasad K 12.12.2014 - 20:12
fonte

2 risposte

6

Diverse opzioni:

  1. il metodo naive sarebbe un if else a cascata (lento)

  2. il compilatore può ordinare i casi dietro la scena e quindi eseguire una ricerca binaria (valida per casi disgiunti)

  3. una tabella di salto; solo buono per casi sequenziali ma molto veloce.

Per gli switch basati su stringhe c'è l'opzione prefisso Trie , una tabella ordinata che può essere ricercata in binario o le stringhe vengono sottoposte a hash e utilizzate per i casi di un passaggio rispetto all'hash della stringa di input con un doppio controllo in ciascun caso.

    
risposta data 12.12.2014 - 20:26
fonte
5

Generalmente, le istruzioni switch sono implementate come Jump Tables . Non è prevista alcuna ricerca.

    
risposta data 12.12.2014 - 20:14
fonte

Leggi altre domande sui tag