Outre les solutions de rechange qui ont été postées ici (qui est correct), personne n'a vraiment répondu à votre question d'aborder ce qui était incorrect avec votre code.
Il semble comme si vous essayiez de mettre en œuvre un tri de la sélection de l'algorithme. Je n'entrerai pas dans les détails de la façon dont le tri fonctionne ici, mais j'ai inclus quelques liens utiles pour votre référence =)
Votre code est syntaxiquement correct, mais logiquement faux. Vous avez été partiellement tri des chaînes par comparaison de chaque chaîne avec les chaînes qui est venu après. Voici une version corrigée (j'ai retenu le plus de ton code d'origine, pour illustrer ce qui était "mal"):
static String Array[]={" Hello " , " This " , "is ", "Sorting ", "Example"};
String temp;
//Keeps track of the smallest string's index
int shortestStringIndex;
public static void main(String[] args)
{
//I reduced the upper bound from Array.length to (Array.length - 1)
for(int j=0; j < Array.length - 1;j++)
{
shortestStringIndex = j;
for (int i=j+1 ; i<Array.length; i++)
{
//We keep track of the index to the smallest string
if(Array[i].trim().compareTo(Array[shortestStringIndex].trim())<0)
{
shortestStringIndex = i;
}
}
//We only swap with the smallest string
if(shortestStringIndex != j)
{
String temp = Array[j];
Array[j] = Array[shortestStringIndex];
Array[shortestStringIndex] = temp;
}
}
}
Lectures Complémentaires
Le problème avec cette approche est que son asymptotique de la complexité est O(n^2). Dans simplifiée des mots, il devient très lent, comme la taille de la matrice augmente (approche de l'infini). Vous pouvez lire sur les meilleures façons de trier les données, telles que quicksort.