A voir également:
- Trier une liste par ordre croissant python sans sort
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante excel - Guide
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms - Forum LibreOffice / OpenOffice
- Vba trier colonne par ordre croissant - Forum VB / VBA
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Excel
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
31 oct. 2014 à 22:31
31 oct. 2014 à 22:31
Bonjour,
Un début de solution, très simple, tu modifies ta première méthode pour qu'elle te renvoie un tableau avec le bon nombre de cases, cela t'évites tout tes problèmes lié à la gestion des cases vides.
Exemple :
Un début de solution, très simple, tu modifies ta première méthode pour qu'elle te renvoie un tableau avec le bon nombre de cases, cela t'évites tout tes problèmes lié à la gestion des cases vides.
Exemple :
public static int[] retainPositive(int[] tab) { if (tab==null) return null; int sz=0; for (int n : tab) if (n>0) sz++; int[] res = new int[sz]; int i=0; for (int n : tab) if (n>0) res[i++]=n; return res; }
31 oct. 2014 à 23:46
je commence par trier pas ordre croissant puis je recherche les positifs en incrémentant un indice qui me donne le nombre de valeur positif, j'utilise donc cet indice pour crée le nouveau vecteur avec comme taille l'indice
1 nov. 2014 à 12:02
Le code que tu as donné ne trie pas tout ! Exemple, [2, 1, 0] va être "trié" en [1, 0, 2].
Il serait d'ailleurs miraculeux d'obtenir un tri en O(n), les meilleurs tris sont en O(n.log n), même si pour un débutant tu auras un tri en O(n²). C'est à dire que si tu as n=10 cases dans ton tableau tu feras "environ" n²=100 comparaisons.
C'est pour ça qu'il est une très mauvaise idée de faire le tri avant de réduire la taille du tableau.
En effet quitte à faire un tri en O(n²) autant réduire n autant que possible. Si tu as n=10 cases dans ton tableau, mais seulement p=5 valeurs positives, il vaut mieux faire un tri qui va te coûter p²=25 comparaisons plutôt que le tri global qui va te coûter n²=100.
Réduire le tableau te coûte O(2n), que tu le fasses avant ou après le tri, tu as donc le choix, trier puis réduire pour un coût de O(n²+2n) ou réduire puis trier pour un coût de O(p²+2n)... sachant que p ≤ n
1 nov. 2014 à 17:44
1 nov. 2014 à 18:33
1 nov. 2014 à 18:34
:p :)