JavaRush /Java блогы /Random-KK /Java тілінде сұрыптауды қалай дұрыс жасауға болады
eGarmin
Деңгей

Java тілінде сұрыптауды қалай дұрыс жасауға болады

Топта жарияланған
Көптеген ашық бастапқы Java жобаларының бастапқы codeын талдай отырып, мен әзірлеушілердің көпшілігі сұрыптауды тек екі түрлі жолмен жүзеге асыратынын анықтадым. Олардың бірі немесе sort()класс әдісін қолдануға негізделген , ал екіншісі және сияқты өздігінен сұрыпталатын деректер құрылымдарын пайдалануға негізделген . CollectionsArraysTreeMapTreeSetJava тілінде сұрыптауды қалай дұрыс орындау керек - 1

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). Бұл жинақтағы деректер көлемі екі есе ұлғайған кезде іздеу уақыты екі есе емес, тұрақты мөлшерге артады дегенді білдіреді .

Сұрыптау мәселесіне дұрыс емес көзқарас

Сіз әлі де бағдарламашылар сұрыптау алгоритмдерін дербес сипаттайтын мысалдарды таба аласыз. Төменде берілген сұрыптау codeын қарастырыңыз (қос массивді өсу ретімен сұрыптау ). Бұл code тек тиімсіз ғана емес, сонымен қатар оқылмайды. Ал мұндай мысалдар өте көп.
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;
		}
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION