排序算法——计数排序
前言
计数排序的思想:在给定的数组中,依次寻找比当前数字小的元素的个数(count),统计之后直接使用t就可以定位到该数所在的位置,因为比它小的元素的个数已经通过count计算出来了,所以直接填充就可以了。
1. 编码
//display
template<typename T> struct Disp
{
void operator()(T value)
{
cout << value << "\t";
}
};
void CountSort(std::vector<int> vec)
{
int len(vec.size());
if(len == 0) return;
cout << "display origin array:" << endl;
for_each(vec.begin(), vec.end(), Disp<int>()); //打印原始的数据
std::vector<int> vec1(len, 0);
bool flag[len] = {false};
for(int i=0; i<len; ++i)
{
int m_count = 0;
for(int j=0; j<len; ++j)
{
if(vec[j]<vec[i] && !flag[j])
{
++m_count;
}
}
vec1[m_count] = vec[i];
flag[i] = true;
}
cout << "\narray sorted:" << endl;
for_each(vec1.begin(), vec1.end(), Disp<int>());
}
还没有评论,来说两句吧...