Java: Arrays.sort(Integer) is more faster than Arrays.sort(int) in the worst case:
The main reason is that Java uses two different sorting algorithms in the cases you mentioned. In the Arrays.sort(int) (or other primitive types) case, Java uses Quicksort, which has a O(n^2) worst case. Instead, in the Arrays.sort(Object) case, it uses Mergesort, which has a O(n log n) worst case.
So some problems may give you Time Limit Exceeded when you use Arrays.sort(int) if there is an anti-quicksort test.
References:
http://codeforces.me/blog/entry/17565
Example 1:
Time limit exceeded because of Arrays.sort(int)
http://codeforces.me/contest/285/submission/20103799
Same code but Accepted because of Arrays.sort(Integer)
http://codeforces.me/contest/285/submission/20103803
Example 2:
Time limit exceeded on test 46 ( because of Arrays.sort(int) )
http://codeforces.me/contest/433/submission/20104326
Accepted after changing it to Arrays.sort(Integer)
http://codeforces.me/contest/433/submission/20104369
When does the worst case of Quicksort occur?
http://www.geeksforgeeks.org/when-does-the-worst-case-of-quicksort-occur/
But why is Quicksort more popular than Mergesort ?
1)Is in-place (MergeSort requires extra memory linear to number of elements to be sorted).
2)Has a small hidden constant.
Reference:
http://stackoverflow.com/questions/70402/why-is-quicksort-better-than-mergesort
I suggest O(n) optimization demonstrated below for time-constrained problems:
http://codeforces.me/contest/285/submission/20108766
Edit: my solution above is wrong as outputs mod n may colide (10^6 + 7 is not a prime).
You can add to the blog that one can easily sort primitive datatypes and not get TLE, just by shuffling the array randomly.
I've been a victim so I know :P
My solution got hacked due to this today. Should've used Integer array
you can still use quick sort while avoiding get hacked. The idea is to randomize the order of the input and then use quick sort. This should work as the probability of the worst case would be nearly non existent.
bug_eater An example of an implementation of this is the ruffle_sort method in my template, which you can see here: 93659906
public class SortComparison {
} Why I am getting below output now? Shouldn't it be other way round according to your blog. Arrays.sort() took time : 0.011 Collections.sort() (mergeSortWithStreams) took time : 0.248 Collections.sort() (mergeSortNormal) took time : 0.314
`