跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python 的 int.bit_length() 函数的时间复杂度是多少呢?
未分類
16 2 月 2021

Python 的 int.bit_length() 函数的时间复杂度是多少呢?

Python 的 int.bit_length() 函数的时间复杂度是多少呢?

資深大佬 : littleMaple 2

假设某整数 x 的二进制最高有效位位数为 n,那么 x.bit_length() 的时间复杂度是 O(n) 还是 O(1) 呢?

大佬有話說 (6)

  • 資深大佬 : mogg

    log n 啊……

  • 資深大佬 : mogg

    对不起看错了,常规算法是 O(log x ) or O(n)
    固定位数有优化到 O(log 32/64……)的算法(记得 csapp 上有)
    Python 的具体实现得看看源码(

  • 資深大佬 : lxy42

    正好在看 Python 源码, [int_bit_length_impl]( https://github.com/python/cpython/blob/master/Objects/longobject.c#L5256).

    从源码来看是 O(1).

  • 主 資深大佬 : littleMaple

    @lxy42 #3 感谢解惑!

  • 主 資深大佬 : littleMaple

    @mogg #2 感谢回复!我这就去看 CSAPP,之前一直放着.

  • 資深大佬 : msg7086

    本质上应该是 lzcnt 吧,让 CPU 算的话是常数时间。
    徒手算的话应该也能优化到常数时间。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具