sort-桶排序

void list_insert(list<int> &t,int num)
{
	auto iter=t.begin();
	for(;iter!=t.end();++iter)
	{
		if(num<=*iter)
			break;
	}

	t.insert(iter,num);
}

void sort_bucket(vector<int> &v)
{
	int bucket_num=6;
	vector<list<int>> vlist=vector<list<int>>(bucket_num);

	int mix=v[0];
	int max=v[0];

	for(int i=1;i<v.size();i++)
	{
		if(v[i]>max) max=v[i];
		if(v[i]<mix) mix=v[i];
	}

	int space=(max-mix)/(bucket_num-1);
	for(int i=0;i<v.size();i++)
	{
		int index=(v[i]-mix)/space;
		list_insert(vlist[index],v[i]);
	}
	

	v.clear();
	for(int i=0;i<vlist.size();i++)
	{
		for(auto iter=vlist[i].begin();iter!=vlist[i].end();++iter)
			v.push_back(*iter);
	}
	
}
原文地址:https://www.cnblogs.com/smallredness/p/10688384.html