यहां लिखा गया quicksort कोड है। समारोह काम नहीं करता है क्योंकि यह आधार मामले तक नहीं पहुंच सकता है। यदि मैं कंसोल पर पिवट, r
और l
लॉग करता हूं, तो वे वही रहते हैं चाहे सॉर्ट फ़ंक्शन को कितनी बार बुलाया जाता है। तो मुझे आश्चर्य है कि तर्क l
, r
वास्तव में फ़ंक्शन में डेटा के रूप में पारित नहीं किया गया है। यह क्यों हुआ?जावास्क्रिप्ट Quicksort में अनंत रिकर्सन?
function sort(data){
if(data.length < 2){
return data;
}
else{
var l = [];
var r = [];
var pivot = parseInt(data.length/2);
for(i=0; i<data.length; i++){
if(data[i] > data[pivot]){
r.push(data[i]);
}
else{
l.push(data[i]);
}
}
return sort(l).concat(sort(r));
}
}
आप प्रत्येक रिकर्सिव कॉल को ओवरराइट कर रहे हैं। आपको उन्हें अपने सॉर्ट फ़ंक्शन से बाहर करना चाहिए। – marteljn
@marteljn हां। लेकिन अगर मैं वापसी से पहले console.log (l) डालता हूं, तो यह उसी सरणी को प्रिंट करता है। इसलिए मैं उलझन में हूं –
मुझे यह पूछना है: 'originalArray.sort()' को कॉल करने में क्या गड़बड़ है? –