gpt4 book ai didi

c++ - 这是最快的一位数字排序算法吗?

转载 作者:行者123 更新时间:2023-12-02 10:10:14 25 4
gpt4 key购买 nike

我正在尝试学习c++并编写了此算法,我想知道是否有更快的方法来完成相同的事情。这是假设输入有效的。我试图考虑如何删除嵌套的for循环,但由于它不是指数形式,因此认为很好。它是否正确?谢谢

void DigitSort(int* arr, int size)
{
int counts[10] = { 0,0,0,0,0,0,0,0,0,0 };
int k = -1;
while (++k < size)
counts[arr[k]]++;
k = -1;
for (int j = 0; j < 10; ++j)
for (int i = 0; i < counts[j]; ++i)
arr[++k] = j;
}

最佳答案

没有基准,但是这是一个使用std::fill_n的(可能)更快的解决方案。

void DigitSort(int* arr, int size)
{
int counts[10] = { 0,0,0,0,0,0,0,0,0,0 };
int k = -1, sum_count = 0;
while (++k < size)
counts[arr[k]]++;

for (k = 0; k < 10; ++k) {
std::fill_n(arr + sum_count, counts[k], k);
sum_count += counts[k];
}
}
当我说“可能”时,是因为编译器可以将std::fill_n优化为 memset-like指令。

关于c++ - 这是最快的一位数字排序算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63886147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com