Radix Sort
Radix sort is a non-comparative integer sorting algorithm that sorts data with integer keys by grouping keys by the individual digits which share the same significant position and value.
/*****Please include following header files*****/
// stdbool.h
/***********************************************/
void RadixSort(int* data, int count) {
int i, j;
int* temp = malloc(sizeof(int) * count);
for (int shift = 31; shift > -1; --shift)
{
j = 0;
for (i = 0; i < count; ++i)
{
bool move = (data[i] << shift) >= 0;
if (shift == 0 ? !move : move)
data[i - j] = data[i];
else
temp[j++] = data[i];
}
for (int i = 0; i < j; i++)
{
data[(count - j) + i] = temp[i];
}
}
free(temp);
}
Example
int data[] = { -1, 25, -58964, 8547, -119, 0, 78596 };
RadixSort(data, 7);
Output
-58964
-119
-1
0
25
8547
78596