Нещодавно я прочитав, що можна мати масиви, які не потрібно ініціалізувати, тобто можна використовувати їх, не витрачаючи часу, намагаючись встановити для кожного члена значення за замовчуванням. тобто ви можете почати використовувати масив так, ніби він був ініціалізований значенням за замовчуванням без необхідності його ініціалізації. (Вибачте, я не пам'ятаю, де я це читав).
Наприклад, чому це може дивувати:
Скажімо, ви намагаєтеся моделювати найгірший випадок хешблету (для кожного вставки / видалення / пошуку) цілих чисел у діапазоні [ 1 , n 2 ] .
Ви можете виділити масив розміром біт і використовувати окремі біти для представлення існування цілого числа в хештелі. Примітка: розглядається розподіл пам'яті часом.
Тепер, якщо вам взагалі не довелося ініціалізувати цей масив, будь-яка послідовність скажувань операцій на цьому хештелі тепер є гіршим випадком O .
Отже, по суті, у вас є "ідеальна" хеш-реалізація, яка для послідовності операцій використовує Θ ( n 2 ) простір, але працює в O ( n ) час!
Зазвичай можна очікувати, що час роботи буде принаймні таким же поганим, як використання вашого простору!
Примітка. Приклад, наведений вище, може бути використаний для реалізації розрідженого набору або розрідженої матриці, тому, мабуть, це не лише теоретичний інтерес.
Отже, питання:
Як можливо мати масив типу структури даних, який дозволяє нам пропустити етап ініціалізації?