基数排序的优雅实现
Posted jerry-fuyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基数排序的优雅实现相关的知识,希望对你有一定的参考价值。
明天补充
1 template <typename It, typename Radix> 2 void radix_sort(It _begin, It _end, Radix _radix, int _pass) 3 4 auto begin = _begin; 5 std::vector<std::vector<std::remove_reference_t<decltype(*_begin)>>> temp0(_radix()), temp1(_radix()); 6 auto src = &temp0; 7 auto dst = &temp1; 8 for (; begin != _end; ++begin) 9 (*src)[_radix(*begin, 0)].push_back(*begin); 10 for (int pass = 1; pass != _pass; ++pass) 11 12 for (auto& v : *dst) 13 v.clear(); 14 for (const auto& v: *src) 15 for (const auto& i : v) 16 (*dst)[_radix(i, pass)].push_back(i); 17 std::swap(src, dst); 18 19 for (const auto& v : *src) 20 for (const auto& i : v) 21 22 *_begin = i; 23 ++_begin; 24 25
以上是关于基数排序的优雅实现的主要内容,如果未能解决你的问题,请参考以下文章