Saralash qiyin bo'lishi mumkin, ayniqsa sizning ro'yxatingizda ibtidoiy sonli ma'lumotlar turlaridan ko'ra
Keyin interfeysni amalga oshirishni aniqlaymiz
List
ob'ektlarni o'rash ( Byte
, Integer
, Short
, Long
, Double
, ) bo'lsa. Float
Men oddiy muammolarni hal qilish yoki suhbatdoshning savoliga javob berish uchun juda foydali bo'lishi mumkin bo'lgan usuldan foydalanishni taklif qilaman. Birinchidan, biz nimani to'ldirishimizni tanlaymiz List
. Edges
Ushbu misolda men oddiy ma'lumotlar strukturasidan grafik qirralari () ro'yxatidan foydalanaman 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();
Grafik nima?
Ehtimol, matematik abstraktsiyalarga o'rganmaganlar uchun bunday ta'rif unchalik aniq bo'lmaydi, shuning uchun oddiyroq aytaylik: Grafik - bu ularni bog'laydigan cho'qqilar va qirralarning yig'indisidir. Grafikning yaxshi namunasi, uni darhol mavhumlik sohasidan material sohasiga olib boradigan temir yo'llar xaritasi. Bunday grafikning uchlari stantsiyalardir . Xo'sh, ular orasidagi yo'llar qirralardir . |
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;
}
}
Ushbu misolda biz grafik qirralarini og'irligi bo'yicha yoki src cho'qqisidan (manba) dst cho'qqigacha bo'lgan masofa (maqsad) bo'yicha tartiblaymiz. Nihoyat, biz standart usuldan foydalanamiz java.util.Arrays.sort ()
:
Arrays.sort(edges, new SortByCost())
Endi ob'ektlar bilan to'ldirilgan varaqimiz Edges
o'sish tartibida (eng kichikdan kattagacha) tartiblangan. Yechim muallifi Ethan Arrowood.
GO TO FULL VERSION