2011-07-09 13 views
8

मैं एल्गोरिदम और डेटा संरचनाओं को ब्रश कर रहा हूं और कुछ प्रश्न हैं और साथ ही कथन जो मैं आपको देखना चाहता हूं।सेट समय और गति जटिलता

ऐरेलिस्ट - ओ (1) (आकार, प्राप्त, सेट, ...), ओ (एन) - ऑपरेशन जोड़ें।
लिंक्डलिस्ट - सभी ऑपरेशन ओ (1) (एड() सहित), एन-एन तत्व को पुनर्प्राप्त करने के अलावा ओ (एन) है। मुझे लगता है कि आकार() ऑपरेशन ओ (1) में भी चलता है, है ना?

ट्रीसेट - सभी संचालन ओ (एलजी (एन))। आकार() ऑपरेशन ओ (एलजी (एन)) लेता है, है ना?

हैशसेट - सभी ऑपरेशंस ओ (1) यदि उचित हैश फ़ंक्शन लागू किया गया है।
हैश मैप - सभी ऑपरेशंस ओ (1), हैशसेट के लिए एकजुट।

कोई और स्पष्टीकरण अत्यधिक स्वागत है। पहले ही, आपका बहुत धन्यवाद।

+0

आप इस तरह के जादू HashSet है, तो तुम क्यों ArrayList की ज़रूरत है? –

+5

@Stas: क्योंकि एक सूची और एक सेट एक ही चीज़ नहीं है, और यह भी कि क्योंकि स्थिर कारक अभी भी काफी भिन्न हो सकते हैं ... –

+0

@Stas: ऑर्डर केवल आपको यह बताता है कि ऑपरेशन स्केल कैसे होता है। यह आपको कारक नहीं बताएगा उदा। हैशसेट ArrayList से कई बार धीमा हो सकता है और उसे()/set() विधियां नहीं मिलती हैं। –

उत्तर

14

ArrayList.add()amortized ओ (1) है। यदि ऑपरेशन को आकार बदलने की आवश्यकता नहीं है, तो यह ओ (1) है। यदि यह को आकार बदलने की आवश्यकता है, तो यह ओ (एन) है, लेकिन आकार तब बढ़ाया जाता है जब अगला आकार कुछ समय के लिए नहीं होगा।

Javadoc से:

ऐड आपरेशन, परिशोधित निरंतर समय में चलता है कि है, n तत्वों को जोड़ने हे (एन) समय की आवश्यकता है। अन्य सभी परिचालन रैखिक समय में चलते हैं (मोटे तौर पर बोलते हैं)। लिंक्डलिस्ट कार्यान्वयन के लिए निरंतर कारक कम है।

प्रदर्शन विश्लेषण के संदर्भ में दस्तावेज़ आमतौर पर जावा संग्रह के लिए बहुत अच्छा है।

हैश एल्गोरिदम के लिए ओ (1) सिर्फ "उचित" हैश फ़ंक्शन को लागू करने का मामला नहीं है - यहां तक ​​कि एक बहुत अच्छे हैश फ़ंक्शन के साथ, आप अभी भी हैश टकराव प्राप्त कर सकते हैं। सामान्य जटिलता ओ (1) है, लेकिन निश्चित रूप से यह ओ (एन) हो सकता है यदि सभी हैश को टक्कर मारने के लिए होता है।

+0

+1: इसी तरह, लिंक्डलिस्ट ओ (1) है, बशर्ते यह एक जीसी ट्रिगर न करे, जिसकी अधिक संभावना है। ;) –

+0

"यह एक जीसी ट्रिगर नहीं करता है"? –

+1

@ सूरज: जीसी = "कचरा संग्रह" (?) – abeln

संबंधित मुद्दे