#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> bucket_sort(vector<int> arr, int size, int count)
{
int new_size = count / size + 1;
vector<vector<int>> bucket(new_size);
for (int i = 0; i < size; i++) {
bucket[arr[i] / 10].push_back(arr[i]);
}
int k = 0;
for (int i = 0; i < new_size; i++) {
sort(bucket[i].begin(), bucket[i].end());
for (int j = 0; j < bucket[i].size(); j++) {
arr[k++] = bucket[i].at(j);
}
}
return arr;
}
int rand_num(int min_num, int max_num) {
return rand() % (max_num - min_num + 1) + min_num;
}
vector<int> rand_array(int array_empty)
{
vector<int> temp;
for (int i = 0; i < array_empty; i++)
{
temp.push_back(rand_num(1, 200));
}
return temp;
}
int main()
{
int array_num;
cin >> array_num;
vector<int> array = rand_array(array_num);
int max_ans = array[0], min_ans = array[0];
for (int i = 0; i < array_num; i++) {
if (array[i] > max_ans) { max_ans = array[i]; }
if (array[i] < min_ans) { min_ans = array[i]; }
}
int max_min = max_ans - min_ans;
vector<int> sort_array = bucket_sort(array, array_num, max_min);
for (int i = 0; i < array_num; i++) {
cout << sort_array[i] << '\t';
}
return 0;
}
为什么这段代码总会出现越界问题,如何优化?