Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void radixsort(int array[], int size) {
- //Set max equal to the greatest element of the array
- int max = 0;
- for (int i = 0; i < size; i++) {
- if (array[i] > max)
- max = array[i];
- }
- for(int pow10=1; max != 0; max/=10, pow10*=10) {
- int buffer[size], blarg[size], bucket[10] = {0};
- //This might improve speed
- for (int i = 0; i < size; i++)
- blarg[i]=(array[i] / pow10) % 10;
- //Calculate the bucket numbers
- for (int i = 0; i < size; i++)
- bucket[blarg[i]]++;
- //Sum the bucket numbers
- for (int i = 1; i<10; i++)
- bucket[i] += bucket[i - 1];
- //Bucket sort the array into a buffer
- for (int i = size - 1; i >= 0; i--)
- buffer[--bucket[(blarg[i]] = array[i];
- //Move the sorted elements back into array
- for (int i = 0; i < size; i++)
- array[i] = buffer[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement