गो

2014-06-30 5 views
5

में क्विक्सोर्ट मैं जा रहा हूं, और एक क्विकॉर्ट को लागू करने की कोशिश की, हालांकि यह पूरी सूची नहीं लौटाता है। जाने की मेरी समझ के लिए यह एक कामकाजी रूबी कार्यान्वयन के साथ मेल खाता है मैंने लिखा था।गो

मेरे कोड है:

func quickSort(data []string) []string { 
    if len(data) > 1 { 
    pivot := data[0] 
    smaller := make([]string, 0, len(data)) 
    equal := make([]string, 0, len(data)) 
    larger := make([]string, 0, len(data)) 
    for i := 1; i < len(data); i++ { 
     if data[i] > pivot { 
     larger = append(larger, data[i]) 
     } else if data[i] < pivot { 
     smaller = append(smaller, data[i]) 
     } else { 
     equal = append(equal, data[i]) 
     } 
    } 
    return append(append(quickSort(smaller), equal...), quickSort(larger)...) 
    } else { 
    return data 
    } 
} 

मैं काम नहीं करता है कि इस में के रूप में बहुत हैरान हूँ।

+2

सुनिश्चित नहीं हैं कि क्यों यह नीचे था वोट दिया है, यह एक कानूनी सवाल है। – OneOfOne

+1

[tex.se] की तुलना में, जहां मैं बहुत सक्रिय होता था, प्रश्नों को तेज़ी से कम करने के लिए यहां एक प्रवृत्ति है :( – topskip

+0

मुझे कुछ फासीवादी सरकार में बदलने से पहले मुझे याद आती है, मुझे '/ r/प्रौद्योगिकी की याद दिलाती है ' – OneOfOne

उत्तर

6

आपके पास बग यह है कि आप कभी लौटे टुकड़े में पिवट मूल्य को जोड़ते नहीं हैं। तो प्रत्येक रिकर्सिव कॉल के लिए, आप पिवट खो देंगे।

कोड के लिए निम्न परिवर्तन करें और यह काम करेगा:

equal := make([]string, 1, len(data)) 
equal[0] = pivot 
+0

श्वास। मुझे पता था कि यह कुछ दर्दनाक स्पष्ट था। – javanut13

+0

बहुत अच्छा पिकअप। मैं अभी भी गो में एल्गोरिदमिक सामान का पालन करने की कोशिश कर रहा हूं। इससे मदद मिली है :) –

 संबंधित मुद्दे