In: Computer Science
This is a radix sort algorithm.
please add the date type and the instruction given inside the code to make it completely work.
please do not change the code just follow the instruction.
#include <iostream>
using namespace std;
// Returns the length, in number of digits, of value
int RadixGetLength(int value) {
if (value == 0)
return 1;
int digits = 0;
while (value != 0) {
digits = digits + 1;
value = value / 10;
}
return digits;
}
// Returns the maximum length, in number of digits, out of all elements in the array
int RadixGetMaxLength(int arr[], int arraySize) {
int maxDigits = 0;
for (int i = 0; i < arraySize; i++) {
int digitCount = RadixGetLength(arr[i]);
if (digitCount > maxDigits)
maxDigits = digitCount;
}
return maxDigits;
}
RadixSort(array, arraySize) {
buckets = create array of 10 buckets
// Find the max length, in number of digits
maxDigits = RadixGetMaxLength(array, arraySize)
// Start with the least significant digit
pow10 = 1
for (digitIndex = 0; digitIndex < maxDigits; digitIndex++) {
for (i = 0; i < arraySize; i++) {
bucketIndex = abs(array[i] / pow10) % 10
Append array[i] to buckets[bucketIndex]
}
arrayIndex = 0
for (i = 0; i < 10; i++) {
for (j = 0; j < buckets[i].size(); j++)
array[arrayIndex++] = buckets[i][j]
}
pow10 = 10 * pow10
Clear all buckets
}
}
int main() {
}
// C++ implementation of Radix Sort
#include <iostream>
using namespace std;
// A utility function to get maximum value in
arr[]
int getMax(int
arr[], int n)
{
    int mx =
arr[0];
    for
(int i = 1; i < n;
i++)
        if
(arr[i] > mx)
            mx
= arr[i];
    return
mx;
}
// A function to do counting sort of arr[] according
to
// the digit represented by exp.
void countSort(int
arr[], int n,
int exp)
{
    int
output[n]; // output array
    int i,
count[10] = { 0 };
    // Store count of
occurrences in count[]
    for (i =
0; i < n; i++)
        count[(arr[i]
/ exp) % 10]++;
    // Change count[i] so
that count[i] now contains actual
    // position of this
digit in output[]
    for (i =
1; i < 10; i++)
        count[i]
+= count[i - 1];
    // Build the output
array
    for (i =
n - 1; i >= 0; i--) {
        output[count[(arr[i]
/ exp) % 10] - 1] = arr[i];
        count[(arr[i]
/ exp) % 10]--;
    }
    // Copy the output
array to arr[], so that arr[] now
    // contains sorted
numbers according to current digit
    for (i =
0; i < n; i++)
        arr[i]
= output[i];
}
// The main function to that sorts arr[] of size n
using
// Radix Sort
void radixsort(int
arr[], int n)
{
    // Find the maximum
number to know number of digits
    int m =
getMax(arr, n);
    // Do counting sort
for every digit. Note that instead
    // of passing digit
number, exp is passed. exp is 10^i
    // where i is current
digit number
    for
(int exp = 1; m
/ exp > 0; exp
*= 10)
        countSort(arr,
n, exp);
}
// A utility function to print an array
void print(int
arr[], int n)
{
    for
(int i = 0; i < n;
i++)
        cout
<< arr[i] << " ";
}
// Driver Code
int main()
{
    int
arr[] = { 170, 45, 75, 90, 802, 24, 2, 66 };
    int n
= sizeof(arr) /
sizeof(arr[0]);
     
      //
Function Call
      radixsort(arr,
n);
    print(arr,
n);
    return
0;
}
note: plzzz don't give dislike.....plzzz comment
if you have any problem i will try to solve your problem.....plzzz
give thumbs up i am in need....