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
Ce n'est pas de tri le tableau de la plus petite à la plus grande
OriginalL'auteur Q Liu | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
La fusion de tri est un bien connu algorithme récursif que vous pouvez prendre des idées de faire votre propre récursif algorithme de tri:
OriginalL'auteur dreamcrash
Vous avez besoin de se rappeler lors de l'initialisation des variables dans votre méthode récursive que vous travaillez sur le startIndex par stopIndex tranche de la matrice, et non pas l'ensemble du tableau, et vous ne devriez pas toucher quoi que ce soit en dehors de cette tranche.
Prendre un autre regard sur l'initialisation de l'indice, minimumIndex, et maximumIndex dans votre duplexSelectionSort méthode.
OriginalL'auteur Patricia Shanahan
C'est un type de récursive de tri que j'ai essayé. Espérons que cette aide.
Sur les mêmes lignes de code, mais je me sens un peu moins compliqué.
OriginalL'auteur Deepak
Vous pouvez également utiliser la sélection de la méthode de tri.
Il est bon algorithme à appliquer récursive style.
OriginalL'auteur Donggun Jung
Pour trier un tableau de la plus petite à la plus grande, ce faire:
OriginalL'auteur Bohemian