#include<iostream>#include<conio.h>#include<iomanip>#include<cmath>/* Bucket Sort */using std::cout;using std::cin;using std::endl;using std::setw;const int size = 10;int Bucket[size], Double[size][size], Number_Digit[size] ,Save[size];void main(){ int Bucket[size] = { 97,121,20,3,55,12,44,1,5,9 }; //lay so digit cua tung so trong mang, va` chuyen vao 1 mang trung gian Number_digt[] for ( int i = 0; i < size; i++ ) { int num = Bucket[i]; Number_Digit[i] = (log(num)/log(10)) + 1; } //xet digit cua fan tu na`o la` MAXIMUM, sort lai cho fan tu do' du'ng dau DAY int max_digit = Number_Digit[0]; for ( int i = 1; i < size-1; i++ ) { if ( max_digit < Number_Digit[i]) max_digit = Number_Digit[i]; } ///////////////////////////////////////////////////////////////////// for ( int c = 0; c < max_digit; i++ ) { for ( int j = 0; j < size; j++ ) { int new_position = 0; int digit = Bucket[j]%10; Double[digit][new_position] = Bucket[j]; Save[j] = digit; for ( int a = 0; a < size; a++ ) { for ( int b = Save[j]; b >= 0; b-- ) { if ( Save[a] == Save[b] ) { new_position++; break; } } } Bucket[j] = Bucket[j]/10; } for ( int i = 0; i < size; i++ ) { for ( int j = 0; j < size; j++ ) { Bucket[i*size+j] = Double[i][j]; } } }for ( int i = 0; i < size; i++ ){ cout << " After Sorted: " << Bucket[i] << setw(3) << endl;}getch();}