2011-09-15 3 views
5

तत्व और सरणी को देखते हुए, रूबी # इंडेक्स विधि सरणी में तत्व की स्थिति देता है। मैंने बाइनरी खोज का उपयोग करके अपनी खुद की इंडेक्स विधि लागू की है, जिससे मेरा निर्माण अंतर्निहित होगा। मेरे आश्चर्य के लिए, अंतर्निहित एक प्रयोग में मेरा जितना तेज़ तीन गुना दौड़ गया।रूबी # इंडेक्स विधि वीएस बाइनरी खोज

कोई रूबीस्टिस्ट कारण जानता है क्यों?

+2

किसने कहा कि रूबी 'इंडेक्स 'विधि बाइनरी खोज के साथ पहले ही लागू नहीं हुई थी? और इसके अलावा, किसने कहा कि रूबी में विधि लागू की गई थी? :-) –

+0

@ प्लैटिनम अज़ूर ओह, मैं देखता हूं, इसे बाइनरी खोज के साथ सी में कार्यान्वित किया जा सकता है। आपका बहुत बहुत धन्यवाद! –

+0

आपको मिल गया! :-) –

उत्तर

10

अंतर्निहित #index is not a binary search, यह सिर्फ एक साधारण पुनरावृत्ति खोज है। हालांकि, यह रूबी के बजाय सी में लागू किया गया है, इसलिए स्वाभाविक रूप से यह तीव्रता के कई आदेश तेजी से हो सकता है।

+0

धन्यवाद। हालांकि, यह वास्तव में अजीब है। क्या कोई कारण था कि उन्होंने बाइनरी खोज दृष्टिकोण को अपनाया नहीं? –

+1

एक बाइनरी खोज में दो तत्वों की तुलना करने में सक्षम होना शामिल है, क्योंकि यह देखने में सक्षम है कि दो elemnts बराबर हैं या नहीं। यह भी ध्यान दें कि प्रलेखन का कहना है कि यह तर्क के बराबर * पहली * ऑब्जेक्ट देता है - एक बाइनरी खोज हमेशा उस तत्व को वापस नहीं लाती है। इसके अलावा, #bsearch का मेरा संस्करण (सरणी को हल करना है) #index से धीमा प्रतीत नहीं होता है: https://gist.github.com/1220440 –

+0

मुझे लगता है कि आपका #bsearch कार्यान्वयन रूबी के बीच अंतर को हरा करने में सक्षम है और सी के साथ बाइनरी खोज और अनुक्रमिक खोज के बीच? –