大哦(Log n)? 我如何通过使用求和来证明它
Error: Could not find or load main class index.Indexer
答案 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 > 0
和n = 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)