Détermine si le tableau de la liste est triée
J'ai besoin d'estimer si le tableau de la liste est triée (ne pas trier).
Quand les Chaînes sont triés, ils sont dans l'ordre alphabétique.
J'essaie d'utiliser compareTo() méthode pour déterminer la corde sur laquelle vient en premier
Et retourne true si la liste de tableau est trié, sinon false.
Code:
public boolean isSorted()
{
boolean sorted = true;
for (int i = 1; i < list.size(); i++) {
if (list.get(i-1).compareTo(list.get(i)) != 1) sorted = false;
}
return sorted;
}
Facile de test:
ArrayList<String> animals = new ArrayList<String>();
ArrayListMethods zoo = new ArrayListMethods(animals);
animals.add("ape");
animals.add("dog");
animals.add("zebra");
//test isSorted
System.out.println(zoo.isSorted());
System.out.println("Expected: true");
animals.add("cat");
System.out.println(zoo.isSorted());
System.out.println("Expected: false");
animals.remove("cat");
animals.add(0,"cat");
System.out.println(zoo.isSorted());
System.out.println("Expected: false");
**Output:**
false
Expected: true
false
Expected: false
false
Expected: false
Facile, ce test ne montre que 1/3
couverture.
Comment résoudre ce problème.
comment pouvez-vous déterminer si la liste est triée par une simple vérification de seulement 2 éléments? si ces 2 éléments ont été dans le tri, mais d'autres ne le sont pas?
OriginalL'auteur nazar_art | 2013-07-06
Vous devez vous connecter pour publier un commentaire.
Vous avez un petit bug dans votre méthode. Devrait être :
>0
au lieu de!=1
, vous ne pouvez pas être sûr que1
est retourné..sorted
variable. Return false immédiatement lorsqueif
vérification échoue.oui, vous n'avez pas besoin de trier les variables .
OriginalL'auteur Grisha Weintraub
Changer la condition :
Vous devriez vérifier pour
>0
au lieu de!=-1
.Passez à la documentation de compareTo()
OriginalL'auteur NINCOMPOOP
Essayer cette
OriginalL'auteur Ruchira Gayan Ranaweera
Vous pouvez écrire un utily méthode comme
isSortedList(List list)
.Comme méthode utilitaire, vous pouvez l'utiliser n'importe où.
OriginalL'auteur prasanth
vous devez changer le compareTo expresion pour tout nombre positif, ce qui indique que l'élément précédent est dans l'ordre alphabétique après l'élément courant, donc la liste n'est pas ordonnée
OriginalL'auteur Isaac.Lopez
Vous devez vérifier les ménagères de cas.
Cela signifie que si vous êtes en supposant que le tri par ordre croissant, les ménagères de cas sera de trouver un élément à l'index
i
être de l'ordre de l'indexi-1
où
element[i] < element[i-1]
.OriginalL'auteur Saher Ahwal