JavaRush /Java blogi /Random-UZ /Java-da qanday qilib to'g'ri tartiblash kerak
eGarmin
Daraja

Java-da qanday qilib to'g'ri tartiblash kerak

Guruhda nashr etilgan
Ko'pgina ochiq manbali Java loyihalarining manba kodini tahlil qilib, men ko'pchilik ishlab chiquvchilar saralashni faqat ikki xil usulda amalga oshirishini aniqladim. sort()Ulardan biri sinf usuli Collectionsyoki dan foydalanishga , ikkinchisi esa va Arrayskabi o'z-o'zidan saralanadigan ma'lumotlar tuzilmalaridan foydalanishga asoslangan . TreeMapTreeSetJava-da qanday qilib to'g'ri tartiblash kerak - 1

Sort() usulidan foydalanish

Agar to'plamni saralash kerak bo'lsa, dan foydalaning 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());
	}
});
Agar massivni saralash kerak bo'lsa, dan foydalaning 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()To'plam yoki massiv allaqachon qiymatlar bilan to'ldirilgan bo'lsa, usul juda qulaydir.

O'z-o'zidan saralanadigan ma'lumotlar tuzilmalaridan foydalanish

Agar roʻyxatni saralash ( List) yoki ( Set) oʻrnatish kerak boʻlsa, TreeSettartiblash tuzilmasidan foydalaning.
// 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);
Agar lug'atni saralash kerak bo'lsa ( Map), tartiblash tuzilmasidan foydalaning TreeMap. TreeMapkaliti ( ) bo'yicha tartiblangan 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);
Yuqoridagi yondashuv to'plamdagi elementlar uchun ko'p sonli qidiruvlarni amalga oshirish kerak bo'lgan hollarda juda foydali. O(log(n))O'z-o'zidan saralanadigan ma'lumotlar tuzilmalari dan yaxshiroq samaradorlikka ega O(n). Bu shuni anglatadiki, to'plamdagi ma'lumotlar miqdori ikki baravar ko'payganda, qidiruv vaqti ikki baravar ko'paymaydi, balki doimiy miqdorga oshadi .

Muammoni tartiblash uchun noto'g'ri yondashuv

Siz hali ham dasturchilar tartiblash algoritmlarini mustaqil ravishda tasvirlaydigan misollarni topishingiz mumkin. Quyida keltirilgan saralash kodini ko'rib chiqing (qo'sh massivni o'sish tartibida tartiblash ) . Ushbu kod nafaqat samarasiz, balki o'qilmaydi ham. Va bunday misollar juda ko'p.
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;
		}
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION