कभी-कभी हम गतिशील स्मृति आवंटन का उपयोग करके सरणी बनाते हैं। यदि गतिशील स्मृति आवंटन तकनीक का उपयोग करके सरणी आवंटित की जाती है, तो हम कुछ संचालन करके सरणी के आकार को दोगुना कर सकते हैं।
मान लीजिए प्रारंभिक सरणी आकार 5 था।
सरणी
0 | 1 | 2 | 3 | 4 |
तत्व 1 | तत्व 2 | तत्व 3 | तत्व 4 | तत्व 5 |
सरणी दोहरीकरण के बाद, आकार है -
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
तत्व 1 | तत्व 2 | तत्व 3 | तत्व 4 | तत्व 5 | तत्व 6 | तत्व 7 | तत्व 8 | तत्व 9 | तत्व 10 |
आकार n के सरणी गिरफ्तारी के आकार को दोगुना करने के लिए, [0… n-1] को गिरफ्तार करें। सबसे पहले हमें आकार की एक नई सरणी बनानी होगी जैसे कि मी। फिर n तत्वों को गिरफ्तारी से नई सरणी में कॉपी करें। अंत में नई सरणी को इंगित करने के लिए arr का मान बदलें।
आकार m की एक सरणी बनाने के लिए, इसमें (m) समय लगेगा। ऐसा इसलिए है क्योंकि इसे कुछ डिफ़ॉल्ट मानों के साथ प्रारंभ किया जाएगा। फिर इसे पुराने सरणी से नए सरणी में कॉपी करने के लिए अतिरिक्त θ(n) समय की आवश्यकता होगी। तो ऑपरेशन में θ(m + n) समय लगता है। यह ऑपरेशन तब हो रहा है जब सरणी भर गई है। और आमतौर पर m का मान 2n के समान होता है। तो जटिलता θ(2n + n) =(3n) (n) के बराबर है। लेकिन इस ऑपरेशन को महंगा माना जाता है। हालाँकि इस ऑपरेशन को बाद के n पुनरावृत्तियों पर परिशोधित किया जाता है, फिर यह केवल θ(1) प्रति पुनरावृत्ति समय जोड़ता है। तो हम समझ सकते हैं कि निरंतर कारक में सरणी आकार बढ़ने से एसिम्प्टोटिक जटिलता पर प्रतिकूल प्रभाव नहीं पड़ता है।