मैं रॉबर्ट सेडविक एल्गोरिदम और डेटा संरचनाओं भाग 1-4 द्वारा पुस्तक में त्वरित क्रम एल्गोरिदम पढ़ रहा हूं।त्वरित सॉर्ट एल्गोरिदम सुधार यदि अधिक डुप्लिकेट कुंजी
template <class item>
static void quicksort(item [] a, int l, int r)
{
if(r <= l) return;
int i = partition(a,l,r);
quicksort(a, l, i-1);
quicksort(a, i+1, r);
}
template <class item>
int partition(item a[], int l, int r)
{
int i = l-1; j = r; item v = a[r];
for(;;) {
while(a[++i] < v);
while(v < a[--j])
if(j == l)
break;
if(i >= j)
break; // pointer crossing.
exch(a[i], a[j]);
}
exch(a[i], a[r]);
return i;
}
पुस्तक में उपरोक्त एल्गोरिदम पर निम्नलिखित पाठ है।
जब डुप्लिकेट चाबी फ़ाइल में मौजूद हैं, सूचक पार सूक्ष्म है। हम विभाजन प्रक्रिया को द्वारा स्कैन को समाप्त कर सकते हैं, जब मैं < जे स्कैन को समाप्त कर सकता हूं, और फिर i-1, के बजाय जे का उपयोग कर, पहले रिकर्सिव कॉल के लिए बाएं उपफाइल के दाएं सिरे को सीमित करने के लिए। लूप को इस मामले में एक और बार फिर से चालू करना सुधार है, क्योंकि, जब भी स्कैनिंग लूप जे के साथ समाप्त हो जाता है और मैं उसी तत्व का जिक्र करता हूं, तो हम में दो तत्वों के साथ समाप्त होते हैं: तत्व जो रोकता है दोनों स्कैन, जो होना चाहिए इसलिए विभाजन तत्व के बराबर हो, और विभाजन तत्व स्वयं ही हो। , क्योंकि इस विशेष मामले में, कार्यक्रम में एक [आर] विभाजन कुंजी के लिए एक महत्वपूर्ण बराबर के साथ एक रिकॉर्ड छोड़ देता है, और कहा कि कॉल जल्दी तरह का पहला विभाजन बनाता है यह परिवर्तन, शायद बनाने के लायक है (एक , i + 1, r) degenerate, क्योंकि इसकी सही सबसे अधिक कुंजी इसकी सबसे छोटी है।
मेरे सवाल कर रहे हैं
- हम कैसे नीचे दिए गए विवरण के साथ कार्यक्रम ऊपर संशोधित कर सकते हैं? मुझे पाठ को समझने के लिए इसे संशोधित करने में कठिनाई हो रही है।
- अधिक डुप्लिकेट कुंजी मौजूद होने पर त्वरित प्रकार से ऊपर एल्गोरिदम प्रभावी ढंग से काम नहीं करता है।
- यदि अधिक डुप्लिकेशन कुंजी मौजूद हैं तो संशोधन में सुधार कैसे किया जाता है?
- लेखक का क्या अर्थ है "वह कॉल में पहला विभाजन त्वरित-क्रम (ए, आई + 1, आर) खराब हो जाता है, क्योंकि इसकी सही कुंजी सबसे छोटी है।" ? लेखक का अर्थ यहां खराब हो गया है?
अपना समय और मदद के लिए धन्यवाद।
@Clare Macrae: यह होमवर्क नहीं है। मैं स्वयं इस पुस्तक को पढ़ रहा हूं और ऊपर एक सवाल है। – venkysmarty