计算排序C ++ 11

时间:2016-08-09 02:06:56

标签: c++11

这是在c ++ 11中计算排序的实现。它没有给出任何输出。可能出了什么问题? std :: copy不应该将已排序的数组复制回原始数组吗?

void counting_sort::sort_array(int array[], int n)
{
std::vector <int> a;
a.insert(a.end(), &array[0], &array[n]);
std::vector <int> b;

auto k = *std::max_element(a.begin(), a.end());
auto m = *std::min_element(a.begin(), a.end());

auto x = k - m + 1;
std::vector<int>v(x);

    for(int i = 0; i < a.size(); i++)
        v[a[i]-m]++;

    for(int i = 1; i < v.size(); i++)
        v[i]=v[i]+v[i-1];

    for(int i = a.size()-1; i >= 0; i--)
        { 
        b[v[a[i]-m]-1] = a[i]; 
        v[a[i]-m]--; 
    }

std::copy(b.begin(), b.end(), array);

}

0 个答案:

没有答案