L'écriture d'un récursif algorithme de tri d'un tableau d'entiers

Je suis en train d'écrire un récursif algorithme de tri d'un tableau d'entiers. Les codes suivants s'imprime dans la console: 3, 5, 2, 1, 1, 2, 6, 7, 8, 10, 20

La sortie doit être triés, mais en quelque sorte "ça ne fonctionne pas".

public static void main(String[] args)
{
int[] unsortedList = {20, 3, 1, 2, 1, 2, 6, 8, 10, 5, 7};
duplexSelectionSort(unsortedList, 0, unsortedList.length-1);
for (int i = 0; i < unsortedList.length; i++)
{
System.out.println(unsortedList[i]);
}
}
public static void duplexSelectionSort(
int[] unsortedNumbers,
int startIndex,
int stopIndex)
{
int minimumIndex = 0;
int maximumIndex = 0;
if (startIndex < stopIndex)
{
int index = 0;
while (index <= stopIndex)
{
if (unsortedNumbers[index] < unsortedNumbers[minimumIndex])
{
minimumIndex = index;
}
if (unsortedNumbers[index] > unsortedNumbers[maximumIndex])
{
maximumIndex = index;
}
index++;
}
swapEdges(unsortedNumbers, startIndex, stopIndex, minimumIndex, maximumIndex);
duplexSelectionSort(unsortedNumbers, startIndex + 1, stopIndex - 1);
}
}
public static void swapEdges(
int[] listOfIntegers,
int startIndex,
int stopIndex,
int minimumIndex,
int maximumIndex)
{
if ((minimumIndex == stopIndex) && (maximumIndex == startIndex))
{
swap(listOfIntegers, startIndex, stopIndex);
}
else
{
if (maximumIndex == startIndex)
{
swap(listOfIntegers, maximumIndex, stopIndex);
swap(listOfIntegers, minimumIndex, startIndex);
}
else
{
swap(listOfIntegers, minimumIndex, startIndex);
swap(listOfIntegers, maximumIndex, stopIndex);
}
}
}
public static void swap(int[] listOfIntegers,
int index1,
int index2)
{
int savedElementAtIndex1 = listOfIntegers[index1];
listOfIntegers[index1] = listOfIntegers[index2];
listOfIntegers[index2] = savedElementAtIndex1;
}
Et la question est...?
Ce n'est pas de tri le tableau de la plus petite à la plus grande

OriginalL'auteur Q Liu | 2012-11-19