马上要秋招了,把刚学的算法整理一下,方便用手机看,就不啰嗦写原理了
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void BucketSort(vector<int> &vec, int max)
{
int len = vec.size();
vector<int> tmp(max + 1, 0);
for (int i = 0; i < len; ++i) //根据元素值,将桶相应索引位置的数据加1
{
tmp[vec[i]]++;
}
int index = 0;
for (int j = 0; j < max + 1; ++j) //把桶中的数据依次取出来
{
for (int k = 1; k <= tmp[j]; ++k)
{
vec[index++] = j;
}
}
}
int main()
{
vector<int> vecOrigin = { 1, 55, 88, 3, 45, 69, 52, 1, 0, 45, 24 };
int maxnum = *max_element(vecOrigin.begin(),vecOrigin.end());
BucketSort(vecOrigin, maxnum);
for (auto &i : vecOrigin)
{
cout << i << " ";
}
system("pause");
return 0;
}