for (int i = 0; i < bucket.length; i++) { bucket[i] = 0; }
// 从数的低位开始进行桶排序 for (int i = 0; i < len; i++) { bucket[(nums[i] / exp) % BASE_NUM]++; }
// 按照当前位给nums排序 // 确定各个数对应的大概位置buket[(nums[i] / exp) % BASE]的值 // 即为新位置的下标 for (int i = 1; i < BASE_NUM; i++) { bucket[i] += bucket[i - 1]; }
// 按当前位进行排序存入到新数组 for (int i = len - 1; i >= 0; i--) { int index = (nums[i] / exp) % BASE_NUM; buffer[--bucket[(nums[i] / exp) % BASE_NUM]] = nums[i]; }
for (int i = 0; i < len; i++) { nums[i] = buffer[i]; }