Le tri peut être délicat, surtout si votre liste
Ensuite nous définissons l'implémentation de l'interface
List
contient des wrappers d'objet ( Byte
, Integer
, Short
, Long
, Double
, Float
) plutôt que des types de données numériques primitifs. Je suggère d’utiliser une méthode qui peut être très utile pour résoudre des problèmes simples ou répondre à la question d’un intervieweur. Tout d'abord, choisissons ce que nous allons remplir notre List
. Dans cet exemple, j'utiliserai une liste d'arêtes de graphique ( Edges
) à partir d'une structure de données simpleGraph
:
// Очень простой класс Edge (рёбро графа)
public class Edge {
public Vertex src;
public Vertex dst;
public double cost;
// создание ребра между двух вершин
Edge(Vertex s, Vertex d, double c) {
src = s;
dst = d;
cost = c;
}
}
// Список рёбер
Edge[] edges = graph.getEdges();
Qu'est-ce qu'un graphique ? En mathématiques discrètes, un graphe est défini comme une paire d'ensembles ( Probablement, pour ceux qui ne sont pas habitués aux abstractions mathématiques, une telle définition ne sera pas très claire, alors disons-le plus simplement : Un graphe est un ensemble de sommets et d’arêtes qui les relient. Un bon exemple de graphique qui passera immédiatement du domaine de l’abstraction au domaine du matériau est une carte de voies ferrées. Les sommets d'un tel graphe sont des stations . Eh bien, les chemins entre eux sont des bords . |
java.util.Comparator
:
class SortByCost implements Comparator<Edge> {
public int compare(Edge a, Edge b) {
if ( a.cost < b.cost ) return -1;
else if ( a.cost == b.cost ) return 0;
else return 1;
}
}
Dans cet exemple, nous trierons les arêtes du graphe par leur poids, ou par la distance du sommet src (source) au sommet dst (destination). Finalement, nous utilisons la méthode standard java.util.Arrays.sort ()
:
Arrays.sort(edges, new SortByCost())
Désormais, notre feuille remplie d'objets Edges
est triée par ordre croissant (du plus petit au plus grand). L'auteur de la solution est Ethan Arrowood.
GO TO FULL VERSION