计算二进制数字算法||证明很大哦

时间:2016-10-19 13:58:22

标签: algorithm

大哦(Log n)? 我如何通过使用求和来证明它

Error: Could not find or load main class index.Indexer

4 个答案:

答案 0 :(得分:0)

只需检查返回的值count即可。由于它更接近logN,您可以声明TC为log(N)

只想反向(数学上):

1 -> 2 -> 4 -> 8 -> ... N (xth value considering 0-indexing system)
2^x = N
x = logN

答案 1 :(得分:0)

您必须考虑更大的数字使用更多内存并为每个操作采用更多处理。注意:时间复杂度只关心最大值而不是较小值的情况。

迭代次数为log2(n)n > 0n = n / 2的成本与整数的大小成正比。即128位成本两次64位和1024位是16倍。因此,每个操作的成本为log(m),其中m是位数存储的最大无符号值。如果你认为有一个固定的浪费比特,例如不超过64位,这意味着费用为O(log(n) * log(n))O(log(n)^2)

如果您使用的是Java的BigInteger,那就是时间复杂度。

答案 2 :(得分:0)

public function save_multiple_images() { $this->load->library('upload'); for($k=0; $k<$total_items; $k++;) { if(isset($_FILES['item_image']['name'][$k])) { $files = $_FILES; $_FILES['userfile']['name'] = $files['item_image']['name'][$k]; $_FILES['userfile']['type']= $files['item_image']['type'][$k]; $_FILES['userfile']['tmp_name']= $files['item_image']['tmp_name'][$k]; $_FILES['userfile']['error']= $files['item_image']['error'][$k]; $_FILES['userfile']['size']= $files['item_image']['size'][$k]; $fileName = $_FILES['userfile']['name']; //Calls set upload funtions $this->upload->initialize($this->set_upload_options($k)); if($fileName!=''){ $this->upload->do_upload(); $upload_data = $this->upload->data(); $fileSize = $upload_data['file_size']; if($this->upload->display_errors()){ echo json_encode($this->upload->display_errors()); exit; } $fileName = base_url('files/reward_images/'.$upload_data['file_name']); } else{ $fileName = base_url('files/reward_images/no_image.png'); } $reward_image = $fileName; $ktem_id =0; $res = $this->rewards_model->save_reward_item($reward_image); } } } private function set_upload_options($k) { //upload an image options $config = array(); $config['upload_path'] = './files/reward_images/'; $config['file_name'] = 'File'.time().$k; $config['allowed_types'] = '*'; \ $config['max_size'] = '52528800'; $config['overwrite'] = FALSE; return $config; } 正在减少:

n

以上系列的总和为n + n / 2 + n / 4 + n / 8 + .... + 8 + 4 + 2 + 1

现在来看上面的问题。循环执行的次数是上面序列中出现的项目数=算法的时间复杂度。

上述系列中显示的项目数为2^(log(n)) - 1。因此算法时间复杂度为logn

O(logn)

答案 3 :(得分:-1)

通过计算while循环运行的次数可以很容易地计算出Big Oh复杂度,因为while循环中的操作需要恒定时间。在这种情况下,N会变化为 -

N,N/2,N/4,N/16.... ,1

只计算上述系列中的术语数量就会给出循环次数的次数。所以,

N/2^p=1       (p is number of times loop runs)

这给出p = logN因此复杂度O(logN)