簡體   English   中英

% 運算符的 C++ 時間復雜度是多少?

[英]What is the C++ Time complexity of % operator?

例如:

a = 10 ^ 12, b = 93 ^ 7
result = b % a

那么就大 O 表示法而言,'%' 運算符的時間復雜度是多少,它是如何計算的?

Big-O 表示法可能是考慮%運算符時間復雜度的錯誤方法。 從根本上說,大 O 表示法測量了隨着輸入變得越來越大,某些數量增長的速率。 但是,內置的%運算符僅適用於原始 integer 類型,並且這些類型以特定大小(例如,64 位)最大。 因此,通過說“ %的成本如何擴展為輸入大小的 function?”來衡量復雜性? 可能不是量化性能的正確方法。 如果您確實想以這種方式量化事物,答案將是“O(1)”,因為計算兩個整數的模數需要一些最大時間量。

您可能還想研究另外兩個問題。 首先是與其他操作(如加法、減法等)相比,執行取模需要多長時間 這個答案因平台而異,但通常模數比加法或減法要慢得多。 第二個是修改兩個整數的大 O 成本是多少,當這些整數可以任意大時? 這永遠不會比進行除法、乘法和減法的成本更糟糕,因為您總是可以計算a - b * (a / b) 這樣做的代價通常比僅僅做乘法慢

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM