算法面试_桶排序

桶排序的思想是将数组分到有限数量的桶中,再对每一个子桶再分别排序(有可能再使用别的排序方法或者以递归的方式再调用桶排序),最后将各个桶中的数据有序的合并起来。

排序过程:

  1. 假设待排序的一组数统一的分布在一个范围中,并将这一范围划分成几个子范围,也就是桶。
  2. 将待排序的一组数,分档归入这些子桶中,并将桶中的数据进行排序。
  3. 将各个桶中的数据有序的合并起来。
void bucketSort(float numbers[], int n)
{
	vector<float> b[n];
	
	for(int i = 0; i < n; i++)
	{
		int bi = n * numbers[i];
		b[bi].push_back(numbers[i]);
	}

	for(int i = 0; i < n; i++)
		sort(b[i].begin(), b[i].end());

	int index = 0;
	for(int i = 0; i < n; i++)
		for(int j = 0; j < b[i].size(); j++)
			numbers[index++] = b[i][j];
}
发布了94 篇原创文章 · 获赞 37 · 访问量 3440

猜你喜欢

转载自blog.csdn.net/Rocky6688/article/details/103638342
今日推荐