基数排序的优雅实现

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 

 

以上是关于基数排序的优雅实现的主要内容,如果未能解决你的问题,请参考以下文章

基数排序算法的Java实现

❤️数据结构入门❤️(4 - 7)- 基数排序

基数排序的具体实现及其原理

java方式实现基数排序

数据结构-排序之基数排序(使用java代码实现)

数据结构-排序之基数排序(使用java代码实现)