Sì, non appena è noto un limite superiore assoluto, l'algoritmo ha una complessità costante.
La complessità algoritmica riguarda solo il modo in cui l'algoritmo scala per dimensioni di input arbitrariamente grandi: quanto tempo occorrono per dieci, mille e un trilione di elementi? Poiché il tuo algoritmo è definito solo fino a una certa dimensione massima, questo ridimensionamento non è molto pertinente.
Quando si analizza la complessità di Big-O, questo argomento di input massimo è spesso molto conveniente. Ad esempio, generalmente si assume che la moltiplicazione e l'addizione siano operazioni O (1). Ma ciò vale solo per tipi di dati a larghezza fissa che sono spesso sufficienti nella pratica. Non è valido per le operazioni di precisione arbitraria / bignum, dove l'aggiunta avrà complessità O (log n) (o O (n) per il numero di bit).
Non è sempre corretto ignorare completamente il Big-O anche quando c'è una dimensione massima. Se l'algoritmo mostra proprietà di ridimensionamento significative all'interno del dominio in cui è definito, dovrebbe essere soggetto ad analisi. Ad esempio, gli algoritmi di O (exp n) potrebbero non essere fattibili per qualsiasi cosa tranne le dimensioni di input a una sola cifra, quindi un limite superiore a migliaia è completamente irrilevante in quanto non verrà mai raggiunto. Allo stesso modo, l'argomento secondo cui tutti i programmi sono O (1) perché i computer reali hanno una memoria finita e sono quindi limitati è specioso: di solito sentirai gli effetti di Big-O molto prima di raggiungere quel limite.