/ / एक प्रोग्रामिंग विधि के रूप में त्वरित छँटाई

प्रोग्रामिंग तकनीक के रूप में त्वरित छँटाई

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

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

Quicksort बहुत आम है और हो सकता हैहर जगह मिलते हैं। इसके आधार पर, TList.Sort विधि, जो डेल्फी के सभी संस्करणों (1 को छोड़कर) में मौजूद है, को C++ में रनटाइम लाइब्रेरी फ़ंक्शन, qsort लागू किया गया है।

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

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

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

विभाजन एल्गोरिथ्म के इस चरण में,जिसमें क्विकसॉर्ट होता है, दो स्थितियां उत्पन्न हो सकती हैं। पहला यह है कि बाईं ओर का सूचकांक दाईं ओर के सूचकांक से कम होगा। यह एक त्रुटि को इंगित करता है, अर्थात इंगित किए गए तत्व सूची में गलत क्रम में हैं। बाहर निकलने का तरीका उन्हें स्वैप करना है। दूसरी स्थिति तब होती है जब दोनों स्तंभ बराबर या प्रतिच्छेद करते हैं। यह सूची के एक सफल विभाजन को इंगित करता है, अर्थात कार्य को पूर्ण माना जा सकता है।

इसे पसंद किया:
0
लोकप्रिय पोस्ट
आध्यात्मिक विकास
भोजन
y