2010-08-25 13 views
9

क्या एक String.indexof() फ़ंक्शन कॉललागत/एक String.indexof() फ़ंक्शन कॉल की जटिलता क्या है

+1

किस भाषा में है, और क्या की तुलना में? फ़ंक्शन के तर्क क्या हैं - क्या यह एक स्ट्रिंग, एक char, एक कस्टम तुलनाकर्ता लेता है? – Kobi

+0

क्या यह जावा है जिसके बारे में आप बात कर रहे हैं? – NullUserException

+0

http://stackoverflow.com/questions/12752274/java-indexofstring-str-method-complexity –

उत्तर

0

जावा में की लागत/जटिलता है, अगर कॉल string1.indexOf (string2) है समय लागत ओ (एम - एन) होगी जहां मीटर स्ट्रिंग 1 की लंबाई है और n स्ट्रिंग 2 की लंबाई है। .indexOf() की

9

IIRC जावा के कार्यान्वयन सिर्फ naive string matching algorithm है, जो O(n+m) औसत और O(n*m) सबसे खराब स्थिति है।

अभ्यास में यह पर्याप्त तेज़ है; मैंने अपेक्षाकृत बड़ी सुई (> 500 चार) और घास के मैदान (कुछ एमबी) तारों के लिए इसका परीक्षण किया और यह एक दूसरे के अंदर मिलान (औसत घरेलू कंप्यूटर में) करेगा। आपको याद है कि मैंने इसे पूरे घास के मैदान से गुजरने के लिए मजबूर किया।

+0

का डुप्लिकेट मुझे पता है कि यह बहुत समय पहले है, लेकिन क्या आप जानते हैं कि आपको यह कहां से मिला है? मुझे अपने स्नातक थीसिस के लिए उस जानकारी की आवश्यकता होगी और मुझे नहीं पता कि स्टैक ओवरफ्लो थीसिस के लिए स्वीकार्य संदर्भ होगा;) – odaa

+0

@odaa मैंने कुछ प्रयोग चलाए और कॉलेज में होने पर एक पेपर लिखा। – NullUserException

+0

@NullUserException, आप क्यों कहते हैं कि 'ओ (एन + एम) 'औसत मामला है? http://stackoverflow.com/a/12752295/632951 उस बिंदु के विपरीत प्रतीत होता है। – Pacerier

0

कार्यान्वयन पर निर्भर करता है।

उदाहरण के लिए, जब एक लंबे समय तक स्ट्रिंग के भीतर एक स्ट्रिंग के लिए खोज, "टर्बो बोयर-मूर एल्गोरिथ्म का अतिरिक्त स्थान निरंतर राशि (के रूप में बोयर-मूर के लिए 3N के खिलाफ) 2n तुलना के भीतर एक खोज को पूरा करने लगते हैं, जहां एन खोजे जाने वाले पाठ में वर्णों की संख्या है। " (Wikipedia देखें)।

+1

@caleb: वास्तव में, आप सवाल से कैसे कह सकते हैं? –

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