时间复杂度:O(N)
空间复杂度:O(N)
//【计算有多少位数字】
int bitsize(vector<int>& nums) {
int max = nums[0];
for(int i = 0; i < nums.size(); i++) {
max = max > nums[i]? max:nums[i];
}
int count = 0;
while(max > 0) {
count++;
max /= 10;
}
return count;
}
//【桶排序】digital为位数
void sort(vector<int>& nums, int left, int right, int digital) {
for(int i = 0; i < digital; i++) {
vector<int>& boxs(right-left+1, 0);
vector<int>& help(nums.size(), 0);
for(int j = 0; j < nums.size(); j++) {
int dig = getDig(nums[j]);
boxs[dig]++;
}
for(int j = 0; j < boxs.size()-1; j++) {
box[j+1] += box[j];
}
for(int j = 0; j < nums.size(); j++) {
int dig = getDig(nums[j]);
help[boxs[dig]-1] = nums[j];
boxs[dig]--;
}
for(int j = 0; j < nums.size(); j++) {
nums[j] = help[j];
}
}
}