ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ
opensource Java-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Π³ΠΎ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ
ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°
sort()
ΠΊΠ»Π°ΡΡΠΎΠ² Collections
ΠΈΠ»ΠΈ Arrays
, Π° Π΄ΡΡΠ³ΠΎΠΉ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΌΠΎΡΠΎΡΡΠΈΡΡΡΡΠΈΡ
ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ TreeMap
ΠΈ TreeSet
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° sort()
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Collections.sort()
.
// Collections.sort(β¦)
List<ObjectName> list = new ArrayList<ObjectName>();
Collections.sort(list, new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Arrays.sort()
.
// Arrays.sort(β¦)
ObjectName[] arr = new ObjectName[10];
Arrays.sort(arr, new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
ΠΠ΅ΡΠΎΠ΄ sort()
ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΠΎΡΡΠΈΡΡΡΡΠΈΡ ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ (List
) ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ (Set
), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ TreeSet
Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
// TreeSet
Set<ObjectName> sortedSet = new TreeSet<ObjectName>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedSet.addAll(unsortedSet);
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ (Map
), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ TreeMap
Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. TreeMap
ΡΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ (key
).
// TreeMap β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ String ΠΊΠ»ΡΡΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ (Comparator) CASE_INSENSITIVE_ORDER,
// ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΡΡΠΎΠΊΠΈ (String) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ compareToIgnoreCase
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(unsortedMap);
//TreeMap β ΠΎΠ±ΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ
Map<ObjectName, String> sortedMap = new TreeMap<ObjectName, String>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedMap.putAll(unsortedMap);
ΠΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. Π‘Π°ΠΌΠΎΡΠΎΡΡΠΈΡΡΡΡΠΈΠ΅ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ O(log(n))
, ΡΡΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ O(n)
. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ
Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° Π½Π΅ ΡΠ΄Π²Π°ΠΈΠ²Π°Π΅ΡΡΡ, Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².)
ΠΠ»ΠΎΡ ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ Π·Π°Π΄Π°ΡΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ΄ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° double-ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².)). ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, Π½ΠΎ ΠΈ Π½Π΅ ΡΠΈΡΠ°Π±Π΅Π»Π΅Π½. Π ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ.double t;
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++)
if (r[j] < r[i]) {
t = r[i];
r[i] = r[j];
r[j] = t;
}