जिंदगी

रूबी में छंटनी

रूबी में छंटनी


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

छंटाई कंप्यूटर वैज्ञानिकों के लिए शुरू से ही एक पूर्वाग्रह था। कई एल्गोरिदम थे जो प्रयोग में आए और गिर गए और आज भी नए एल्गोरिदम प्रदर्शन की सीमाओं को आगे बढ़ा रहे हैं। उच्च-स्तरीय भाषा होने के नाते, यदि आप प्रदर्शन के बारे में परवाह करते हैं, तो आप रूबी में सॉर्टिंग एल्गोरिदम को लागू नहीं करेंगे, और इसके अलावा, Arrays और अन्य संग्रह सॉर्ट करना अभी और भी चीजें हैं जो रूबी आपके लिए करती हैं।

01of 04

छंटनी कर रहे हैं

तकनीकी रूप से, छांटना एक काम है जोकि एन्युमरेबल मॉड्यूल द्वारा नियंत्रित किया जाता है। Enumerable मॉड्यूल रूबी में सभी प्रकार के संग्रह को एक साथ जोड़ता है। यह संग्रह पर पुनरावृत्ति को संभालता है, सॉर्ट करता है, कुछ तत्वों को ढूंढता है और खोजता है, आदि कि कैसे संग्रह योग्य संग्रह एक रहस्य का एक सा है, या कम से कम यह ऐसा ही रहना चाहिए। वास्तविक छँटाई एल्गोरिथ्म अप्रासंगिक है, केवल एक चीज जिसे आपको जानना आवश्यक है कि संग्रह में वस्तुओं की तुलना "अंतरिक्ष यान ऑपरेटर" का उपयोग करके की जाती है।

02of 04

एक अंतरिक्ष यान में छँटाई

"स्पेसशिप ऑपरेटर" दो ऑब्जेक्ट लेता है, उनकी तुलना करता है और फिर -1, 0 या 1 देता है। यह थोड़ा अस्पष्ट है, लेकिन ऑपरेटर के पास बहुत अच्छी तरह से परिभाषित व्यवहार नहीं है। उदाहरण के लिए न्यूमेरिक ऑब्जेक्ट लेते हैं। यदि आपके पास दो संख्यात्मक वस्तुएं हैं तथा, और मूल्यांकनa b, क्या अभिव्यक्ति का मूल्यांकन करेगा? न्यूमेरिक्स के मामले में, यह बताना आसान है। यदि a, b से अधिक है, तो यह -1 होगा, यदि वे समान हैं तो इसकी संख्या 0 होगी और यदि b, a से अधिक है, तो यह 1 होगा। इसका उपयोग छँटाई एल्गोरिथ्म को बताने के लिए किया जाता है, जो दो वस्तुओं में से एक होना चाहिए सरणी में पहले जाओ। बस याद रखें कि अगर बाएं हाथ का ऑपरेंड सरणी में पहले आना है, तो इसे -1 का मूल्यांकन करना चाहिए, अगर दाहिना हाथ पहले 1 होना चाहिए, और अगर यह मायने नहीं रखता है तो यह 0 होना चाहिए।

यह हमेशा इस तरह के नियम का पालन नहीं करता है। यदि आप विभिन्न प्रकारों की दो वस्तुओं पर इस ऑपरेटर का उपयोग करते हैं तो क्या होगा? आपको शायद एक अपवाद मिलेगा। जब आप कॉल करते हैं तो क्या होता है1 'बंदर'? यह कॉलिंग के बराबर होगा1। ( 'बंदर'), जिसका अर्थ है वास्तविक विधि पर बुलाया जा रहा हैबाएं ऑपरेंड औरFixnum # अगर दाहिने हाथ का ऑपरेंड कोई न्यूमेरिक नहीं है, तो रिटर्न देता है। यदि ऑपरेटर शून्य पर लौटता है, तो सॉर्ट विधि एक अपवाद उठाएगी। इसलिए, सरणियों को छांटने से पहले सुनिश्चित करें कि उनमें ऐसी वस्तुएँ हैं जिन्हें क्रमबद्ध किया जा सकता है।

दूसरा, स्पेसशिप ऑपरेटर के वास्तविक व्यवहार को परिभाषित नहीं किया गया है। यह केवल कुछ आधार वर्गों के लिए परिभाषित है, और आपके कस्टम वर्गों के लिए, यह पूरी तरह से आप पर निर्भर है कि आप उन्हें क्या मतलब देना चाहते हैं। अगर आपके पास एक हैछात्र कक्षा आपके पास अंतिम नाम, प्रथम नाम, ग्रेड स्तर या उस के संयोजन से छात्र प्रकार हो सकती है। इसलिए हमेशा इस बात से अवगत रहें कि स्पेसशिप ऑपरेटर के व्यवहार और छंटाई को किसी भी चीज़ के लिए अच्छी तरह से परिभाषित नहीं किया गया है लेकिन आधार प्रकार।

03of 04

क्रमबद्ध प्रदर्शन करना

आपके पास संख्यात्मक वस्तुओं का एक सरणी है और आप उन्हें सॉर्ट करना चाहेंगे। ऐसा करने के लिए दो प्राथमिक विधियाँ हैं:तरह तथातरह!। पहले सरणी की एक प्रति बनाता है, इसे सॉर्ट करता है और इसे वापस करता है। दूसरी जगह सरणी को सॉर्ट करता है।

यह बहुत आत्म व्याख्यात्मक है। तो चलो इसे एक पायदान ऊपर ले जाएं। क्या होगा यदि आप स्पेसशिप ऑपरेटर पर भरोसा नहीं करना चाहते हैं? यदि आप पूरी तरह से अलग व्यवहार चाहते हैं तो क्या होगा? ये दो छंटाई विधियां एक वैकल्पिक ब्लॉक पैरामीटर लेती हैं। यह ब्लॉक दो मापदंडों को लेता है और मानों को पैदावार करना चाहिए जैसे कि स्पेसशिप ऑपरेटर करता है: -1, 0 और 1. इसलिए, एक एरे को देखते हुए, हम इसे सॉर्ट करना चाहते हैं ताकि सभी मान 3 से विभाज्य हो जाएं, और अन्य सभी बाद में आते हैं। । वास्तविक आदेश यहां कोई फर्क नहीं पड़ता, बस 3 से विभाज्य पहले आते हैं।

यह कैसे काम करता है? पहले, ब्लॉक तर्क को सॉर्ट विधि पर ध्यान दें। दूसरा, ब्लॉक मापदंडों पर किए गए मॉडुलो डिवीजनों और स्पेसशिप ऑपरेटर के पुन: उपयोग पर ध्यान दें। यदि कोई 3 का गुणक है, तो modulo 0 होगा, अन्यथा, यह 1 या 2 होगा। चूंकि 0 1 या 2 से पहले छँटेगा, केवल यहाँ modulo मायने रखता है। ब्लॉक पैरामीटर का उपयोग करना उन सरणियों में विशेष रूप से उपयोगी होता है जिनमें एक से अधिक प्रकार के तत्व होते हैं, या जब आप कस्टम वर्ग पर छांटना चाहते हैं जिसमें परिभाषित स्पेसशिप ऑपरेटर नहीं होता है।

04of 04

वन लास्ट सॉर्ट

एक और सॉर्ट विधि है, कहा जाता हैइसके अनुसार क्रमबद्ध करें। हालाँकि, आपको पहले Sort_by से निपटने से पहले मैप के साथ सरणियों और संग्रहों का अनुवाद करना समझना चाहिए।



टिप्पणियाँ:

  1. Maxime

    सब ठीक है।

  2. Coburn

    मेरी राय में इस पर पहले ही चर्चा हो चुकी है।

  3. Machk

    आप गलती कर रहे हैं। मुझे पीएम पर ईमेल करें।

  4. Sarg

    I am sorry, that I interfere, but I suggest to go another by.



एक सन्देश लिखिए