Xüsusilə siyahınızda ibtidai rəqəmsal məlumat növləri deyil,
Sonra interfeysin həyata keçirilməsini müəyyənləşdiririk
List
obyekt sarğıları ( Byte
, Integer
, Short
, Long
, Double
, ) varsa, çeşidləmə çətin ola bilər. Float
Sadə problemlərin həlli və ya müsahibə verənin sualına cavab vermək üçün çox faydalı ola biləcək bir üsuldan istifadə etməyi təklif edirəm. Əvvəlcə nə dolduracağımızı seçək List
. Edges
Bu nümunədə mən sadə verilənlər strukturundan qrafik kənarlarının ( ) siyahısını istifadə edəcəyəm Graph
:
// Очень простой класс 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();
Qrafik nədir? Diskret riyaziyyatda qrafik bir cüt çoxluq ( Yəqin ki, riyazi abstraksiyalara öyrəşməyənlər üçün belə bir tərif çox aydın olmayacaq, ona görə də daha sadə deyək: Qrafik onları birləşdirən təpələrin və kənarların məcmusudur. Onu dərhal abstraksiya sahəsindən material sahəsinə aparacaq qrafikin yaxşı nümunəsi dəmir yolu relslərinin xəritəsidir. Belə bir qrafikin təpələri stansiyalardır . Yaxşı, aralarındakı yollar kənarlardır . |
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;
}
}
Bu misalda biz qrafikin kənarlarını çəkilərinə görə və ya src təpəsindən (mənbə) dst təpəsinə (təyinat) qədər olan məsafəyə görə çeşidləyəcəyik. Nəhayət, standart metoddan istifadə edirik java.util.Arrays.sort ()
:
Arrays.sort(edges, new SortByCost())
İndi obyektlərlə dolu vərəqimiz Edges
artan qaydada (kiçikdən böyüyə) sıralanır. Həllin müəllifi Ethan Arrowooddur.
GO TO FULL VERSION