java - Whats wrong with my QuickSort implementation? -


  वर्ग विभाजन यह {सार्वजनिक स्थिर शून्य विभाजन} (int [] a, int l, int r, int pivot) { Int i, j; मैं = जम्मू = एल + 1; जबकि (जे एंड एलटी; = आर) {if (a [j] & lt; = a [pivot]) {स्वैप (a, j, i); i ++; } जे ++; } स्वैप (ए, धुएं, - i); } सार्वजनिक स्थिर शून्य स्वैप (int [] a, int j, int i) {int temp = a [j]; एक [जे] = एक [i]; एक [i] = अस्थायी; } सार्वजनिक स्थिर शून्य प्रदर्शनअरे (int [] a) {for (int i: a) System.out.print (i + ""); Println (); } सार्वजनिक स्थिर शून्य QuickSort (int [] a, int l, int r) {if (r & lt; = l) रिटर्न; Int pivot = getPivot (ए, एल, आर); partitionIt (एक, एल, आर, धुरी); Quicksort (एक, एल, धुरी); Quicksort (क, धुरी + 1, r); } सार्वजनिक स्थिर int getPivot (int [] a, int l, int r) {वापसी l; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {int [] a = {3,2,8,5,1,4,7,6}; Int [] बी = {1,2,3,4,5,6,7,8,9,0}; Int [] c = {5,4,2,4,7,6,5,3,2,1,10}; displayArray (क); System.out.println ("पिवट 3 के साथ पैराइटटोन के बाद"); Quicksort (क, 0, a.length -1); displayArray (क); Println (); displayArray (ख); System.out.println ("पिवोट 1 के साथ पैराइटटोन के बाद"); Quicksort (ख, 0, b.length -1); displayArray (ख); Println (); displayArray (ग); System.out.println ("पिरिटिटोन के साथ धुएं 5 के बाद"); Quicksort (ग, 0, c.length -1); displayArray (ग); Println (); }  

}

  3 2 8 5 1 4 7 6 पिरिटिटोन के साथ धुएं 3 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 0 धुरी के साथ पैरिटिटन के बाद 1 0 1 2 3 4 5 6 7 8 9 5 4 2 4 7 6 5 3 2 1 10 पिरिटिटोन के साथ धुएं 5 1 2 2 4 3 4 5 5 6 7 10  

यह पिछले मामले में ठीक तरह से छँटाई नहीं है।

क्या कोई यहां मदद कर सकता है? मैं इतने लंबे समय से फंस गया हूं।

धन्यवाद अग्रिम!

इस स्निपेट पर :

  यदि (a [j] & lt; = एक [धुआं]) {स्वैप (a, j, i); i ++; }  

'& lt; =' होना चाहिए '& lt;'।

जबकि अनुक्रम 1 2 2 4 3 4 5 5 7 6 10, 4 '(4, i ++) की तुलना करते हुए धुएं' 4 '(बाएं एक) है, इस कारण स्वैप (ए, पिवट, - i)' 4 '(सही एक) के स्थान को 4 में बदल जाता है '(बाएं एक),' 3 'से' 4 'को बदलने की बजाय।


Comments