मैं जावा में एक परियोजना को देख रहा था और एक for
पाश जो नीचे की तरह लिखा गया था पाया:समय जटिलता या जावा में <Array Name> .length की छिपी लागत
for(int i=1; i<a.length; i++)
{
...........
...........
...........
}
मेरा प्रश्न है: यह महंगा गणना करने के लिए है a.length
(यहां एक सरणी नाम है)? यदि नहीं, तो a.length
को आंतरिक रूप से गणना कैसे की जा रही है (इसका मतलब है कि JVM कैसे सुनिश्चित करता है कि ओ (1) इस तक पहुंच)? जैसा है:
int length = a.length;
for(int i=1; i<length; i++)
{
...........
...........
...........
}
यानी फ़ंक्शन के अंदर स्थानीय चर के मूल्य तक पहुंचने की तरह। धन्यवाद।
समय स्थिर है लेकिन संभवतः यह एक स्टैक वैरिएबल में लंबाई को संग्रहीत करने से थोड़ा सा धीमा है। मुझे इस पर संदेह है क्योंकि जेवीएम को सरणी में जाना है और फिर लंबाई प्राप्त करना है। लेकिन यह सरणी तत्वों को स्कैन नहीं करता है और उन्हें गिनता है। –
देखें http://stackoverflow.com/questions/5950155/how-is-length-implemented-in-java-arrays – Shoe
'a.length'" गणना "नहीं हो रहा है, यह एक अंतिम क्षेत्र है। – arshajii