吊桶排序的排序速度很快,平均是O(n),能达到这么快的速度其中一个原因是它假设了输入值为范围是[0, 1)的小数。
Introduction to Algorithm这本书里面章8.4的算法,首先把原数组按照一定规律对照到每个吊桶(Bucket)里面,然后对每个Bucket排序,最后把这些Bucket串起来,就成为一个有序序列了。
?
#include
#include
#include
#include
#include
using namespace std;
template
void bucketSort(typename C& ca) //难点
{
int n = ca.size();
int k = 0, i = 0;
vector > vld(n); //难点
for(i=0; i caTemp;
for(i = 0; i
class Print
{
public:
Print(){}
void inline operator()(const T& x) const{cout< ld(a, a+10);
//排序前
for_each(ld.begin(), ld.end(), Print());
cout<
?
?
总结:
C++是个非常好的开发工具,但是如果不熟悉的话,还是挺耗时间的。
编程的时候一定要注意每一个细节,不然就可能被这些细节耽误很多时间。思维一定要保持高度逻辑性,否则就很难debug好。所谓差之毫厘谬以千里,有时候会被一个小;号,和&号搞的代码出错的,所以要非常注意。