#include
// Constant Size Must Be Defined As The Array Size for Bucketsort To Workconst Int Size = 12;
Void bucketsort (int []); void distributeereferences (int [】, int); void collectlements (int [】, int [] [size]); int Numberofdigits (int ", int); Void Zerobucket (int [】 [size]);
INT main () {int Array [size] = {19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21};
COUT << "Array Elements in Original Order: / N";
For (int i = 0; i COUT << '/ n'; bucketsort (array); Cout << "/ Narray Elements in sorted order: / n"; For (int J = 0; j Cout << Endl; Return 0; // Perform The Bucket Sort Algorithmvoid Bucketsort (Int a []) {Int Totaldigits, Bucket [10] [SIZE] = {0}; Totaldigits = NumberOfDigits (A, Size); For (int i = 1; i <= totaldigits; i) {DistributeElements (A, Bucket, I); CollectElements (A, BUCKET); IF (i! = totaldigits) Zerobucket (BUCKET); // set all bucket contents to zero}} // DETERMINE THE NUBER OF DIGITS in The Largest Numberint Numberofdigits (int B [], int Arraysize) {Int Largest = B [0], DIGITS = 0; For (int i = 1; i While (Largest! = 0) { Digits; Largest / = 10; Return Digits; // Distribute elements into buckets based on specified digitvoid distributeElements (int a [], int buckets [] [SIZE], int digit) {int divisor = 10, bucketNumber, elementNumber; for (int i = 1; i For (int K = 0; k // Retrieve Value in Buckets [BucketNumber] [0] to Dermine // Which Element of The Row To Store A [i] in. ElementNumber = Buckets [BucketNumber] [0]; buckets [bucketnumber] [ElementNumber] = A [k]; // Return Elements to Original Arrayvoid CollectElements (int A [】, int bukeets []i]) {int subscript = 0; For (int i = 0; i <10; i) for (int J = 1; j <= buckets [i] [0]; j) a [subscript ] = buckets [i] [j]; } // set all buckets to zerovoid Zerobucket (int bukeets [] []) {for (int i = 0; i <10; i) for (int J = 0; j