#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//输入数组,和个数
template <typename T>
void BucketSort(vector<T> &A, int n)
{
int i ,j;
vector<T> B[7]; //桶容器
for (i = 0; i < n; i++)
{
int temp = n*A[i];
B[temp].push_back(A[i]);
}
for (i = 0; i < n; i++)
sort(B[i].begin(), B[i].end()); //对每个桶排序
int index = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < B[i].size(); j++)
A[index++] = B[i][j];
}
}
int main(void)
{
vector<double> arr = { 0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434 };
int n = arr.size();
BucketSort(arr, n);
for (auto i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}
《算法导论》的桶排序C++实现
最新推荐文章于 2018-11-27 18:13:44 发布