将执行多少次增量
How many times increment will be executed?
我有以下代码
int cnt = 0;
for (int i = 0; i < N; ++i)
{
for (int j = i + 1; j < N; ++j)
{
if(a[i] + a[j] == 0)
{ ++cnt;}
}
}
其中N是数组中元素的数量。
我开始学习算法,并试图找出增量将被执行多少次?
对于i
,它将是N
次。
对于j
,当i = 0
时为N-1
次,当i = 1
时为N-2
次。所以N-1 + N-2 + ... + 0 = ((0 + N-1)/2)*N = N*(N-1)/2
那么cnt++
将被执行多少次呢?
为了回答这个问题,我们需要找到==
将被执行多少次?当然,它会在射程内。从0
到一些值。我们的最终答案将在0 + number of(++i) + number of(++j)
到some value + number of(++i) + number of(++j)
的范围内。
让我们找到这个some value
当i=0
时将为1...N-1
,当i=1
时为2...N-2
等所以N-1 + N-2 + ... + 0 = N*(N-1)/2
所以答案是从N*(N-1)/2
到N + N(N-1)/2 + N(N-1)/2
,所以从N*(N-1)/2 to N^2
但是R.Sedgwick在第33张幻灯片上说http://www.cs.princeton.edu/courses/archive/spring15/cos226/lectures/14AnalysisOfAlgorithms.pdf
答案将来自N*(N+1)/2 to N^2
为什么?我错了吗?哪里
内部循环(==
测试(确实执行了N(N-1)/2
次。
因此,可能在0
和N(N-1)/2
之间执行增量(++cnt
(。
这两个边界可以达到:当全部为a[k] > 0
时为0
,当全部为a[k] == 0
时为N(N-1)/2
。
对于增量的总计数,将外部for
循环的N
和内部for
循环的N(N-1)/2
相加,并在N(N+1)/2
和N²
之间(包括两者(。
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- C++如何在多次执行后记住过去给出的输入
- 在 C++ AMP 数组中复制数据多少次?
- C++ 检查结果数组中有多少次数字
- 我如何使它,无论用户用空白字符串按 Enter 多少次,它总是打印"开始"字符串?
- 如何计算整数链中使用了多少次数字?
- 计算有多少人执行我的C++应用程序
- 为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?
- Qt不能多次执行线程
- 如果函数按值传递并按值返回,将调用复制构造函数多少次
- 为什么我的虚拟破坏者多次执行这些执行
- 复制构造函数被调用了多少次?
- 有没有办法在C++应用程序的多次执行中保存值?
- 此函数调用了多少次
- 我需要声明多少次 std::ios::sync_with_stdio(假);在程序中
- 尝试创建一个读取.txt文件,显示它,计数唯一单词的程序,并在使用了多少次的情况下显示独特的单词.C
- 如何计算循环执行了多少次?C++
- 循环可以在多线程C++程序中执行多少次
- 将执行多少次增量
- 静态int执行多少次