5 ms·
This is the the version in Java. Only four lines (including the curly bracket). private static void rangeCheck(int length, int fromIndex, int toIndex) {
by felipemnoa 14y ago
This is the the version in Java. Only four lines (including the curly bracket).
private static void rangeCheck(int length, int fromIndex, int toIndex) {
if (fromIndex > toIndex || fromIndex < 0 || toIndex > length)
throw new Exception("Illegal index");
}
- self 14y agoShouldn't that be "toIndex >= length"?
- 6ren 14y agoBloch used > http://news.ycombinator.com/item?id=3940683 http://news.ycombinator.com/item?id=3940683 I think in defining a range, the toIndex means up-to-but-not-including the element at that index. Thus, to include the full array, you'd use the range fromIndex=0, toIndex=length (one past the last one, since the index of the last element is length-1). With this notation, you can then make ranges of any width, from 0 up to length. If instead you included the element at that index, you couldn't have 0-width ranges (unless you allowed toIndex to equal one less than fromIndex). I don't know whether 0-width ranges are directly useful for the Timsort algorithm; or whether it's just a convenient notation that happens to have that ability as an unused side-effect.
- 6ren 14y agoYou're throwing a generic exception; Bloch's version throws two specific exceptions, together with appropriate information. Java tends to have excellent error reporting. All this reminds me of people saying that could code stackoverflow or facebook in a weekend. The difference is that rangeCheck actually is trivial - it's just that it's easy to underestimate the work involved in coding something. Even something trivial.
- felipemnoa 14y ago>>You're throwing a generic exception; Bloch's version throws two specific exceptions, together with appropriate information. Java tends to have excellent error reporting. I know. I reduced it to one generic exception because that is what the person I was replying to did. Bloch's version is better of course.