15template <
typename T>
void bucket_sort(std::vector<T>& arr) {
16 if (std::is_same_v<T, int> || std::is_same_v<T, int64_t>) {
17 std::sort(arr.begin(), arr.end());
20 std::vector<float> buckets[arr.size()];
21 for (int64_t i = 0; i < arr.size(); i++) {
22 int64_t index = arr.size() * arr[i];
23 buckets[index].push_back(arr[i]);
26 for (int64_t i = 0; i < arr.size(); i++) {
27 std::sort(buckets[i].begin(), buckets[i].end());
31 for (int64_t i = 0; i < arr.size(); i++) {
32 for (int64_t j = 0; j < buckets[i].size(); j++) {
33 arr[index++] = buckets[i][j];