Talk:Sorting algorithms/Radix sort: Difference between revisions

Suggestion of java code
No edit summary
(Suggestion of java code)
 
Line 10:
in the C code for radix sort, it seems to me that the condition ll < to after the "while (1)" loop is always fulfilled, and can thus be removed. Indeed in the "while (1)" loop we always have ll <= rr, thus since rr decreases ll cannot exceed the initial value of rr, which is to - 1.
[[User:Paul Zimmermann]] 13:09, 30 October 2012
 
==Java==
 
I made a shorter/simpler implementation of the java example (it also handles negatives)
 
<lang java>public static int[] sort(int[] old) {
for(int shift = Integer.SIZE-1; shift > -1; shift--) { //Loop for every bit in the integers
int[] tmp = new int[old.length]; //the array to put the partially sorted array into
int j= 0; //The number of 0s
int i; //Iterator
 
for(i = 0; i < old.length; i++){ //Move the 0s to the new array, and the 1s to the old one
boolean move = old[i] << shift >= 0; //If there is a 1 in the bit we are testing, the number will be negative
if(shift == 0 ? !move : move) { //If this is the last bit, negative numbers are actually lower
tmp[j] = old[i];
j++;
} else { //It's a 1, so stick it in the old array for now
old[i-j] = old[i];
}
}
for(i = j; i < tmp.length; i++) { //Copy over the 1s from the old array
tmp[i] = old[i-j];
}
old = tmp; //And now the tmp array gets switched for another round of sorting
}
return old;
}</lang>
 
[[User:Forty-Bot|Forty-Bot]] ([[User talk:Forty-Bot|talk]])
Anonymous user