Anonymous user
Talk:Sorting algorithms/Radix sort: Difference between revisions
Talk:Sorting algorithms/Radix sort (view source)
Revision as of 08:42, 1 February 2014
, 10 years agoSuggestion of java code
(→Negatives: added yet another comment to the affirmative. -- ~~~~) |
(Suggestion of java code) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 5:
::: It was a smaller change to the code I already had working for the positive case. :-) –[[User:Dkf|Donal Fellows]] 16:42, 19 January 2011 (UTC)
::: Yuppers, the
==C code==
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]])
|