C++ 排序算法——桶排序

马上要秋招了,把刚学的算法整理一下,方便用手机看,就不啰嗦写原理了

#include
#include
#include
using namespace std;



void BucketSort(vector &vec, int max)
{
	int len = vec.size();
	vector 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 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;
}

 

你可能感兴趣的:(C++ 排序算法——桶排序)