免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1493 | 回复: 1
打印 上一主题 下一主题

[C++] stl sort这行代码看不懂啊! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-07 15:31 |只看该作者 |倒序浏览
_Ideal /= 2, _Ideal += _Ideal / 2;        // allow 1.5 log2(N) divisions

这行的代码的意思不就是_Ideal=_Ideal*(3/4);么?
那么不就应该是允许division log(4/3)(N)次么?  为什么是1.5 log2(N) divisions
怎么看这两个数都不相等啊

完整代码:
template<class _RanIt,
        class _Diff> inline
        void _Sort(_RanIt _First, _RanIt _Last, _Diff _Ideal)
        {        // order [_First, _Last), using operator<
        _Diff _Count;
        for (; _ISORT_MAX < (_Count = _Last - _First) && 0 < _Ideal; )
                {        // divide and conquer by quicksort
                _STD pair<_RanIt, _RanIt> _Mid =
                        _Unguarded_partition(_First, _Last);
                _Ideal /= 2, _Ideal += _Ideal / 2;        // allow 1.5 log2(N) divisions

                if (_Mid.first - _First < _Last - _Mid.second)
                        {        // loop on second half
                        _Sort(_First, _Mid.first, _Ideal);
                        _First = _Mid.second;
                        }
                else
                        {        // loop on first half
                        _Sort(_Mid.second, _Last, _Ideal);
                        _Last = _Mid.first;
                        }
                }

        if (_ISORT_MAX < _Count)
                {        // heap sort if too many divisions
                _STD make_heap(_First, _Last);
                _STD sort_heap(_First, _Last);
                }
        else if (1 < _Count)
                _Insertion_sort(_First, _Last);        // small
        }

论坛徽章:
0
2 [报告]
发表于 2012-11-07 18:51 |只看该作者
还有一点
_Ideal /= 2, _Ideal += _Ideal / 2;
这里为什么要用逗号表达式了,直接冒号不完了么

话说,逗号表达式看起来就是个毫无作用的东西啊
哪位能举个用逗号表达式的例子?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP