我在这里有一个功能,我可以看到是O(N ^ 2)。但是,我想弄清楚每条线路使用的确切步数/计算。
public class ContactActivity extends Activity implements ContactListFragment.ContactListListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
}
@Override
public void itemClicked(long id){
//method also defined in the listener
View fragmentContainer = findViewById(R.id.fragment_detail_container);
if (fragmentContainer != null){
ContactDetailsFragment detailsFragment = new ContactDetailsFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
detailsFragment.setContact(id);
fragmentTransaction.replace(R.id.fragment_detail_container, detailsFragment);
//fragmentTransaction.addToBackStack(null);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.commit();
}
}
}
对于第1行,我认为它是1+(N + 1)+1。
第2行和第3行应该是sum(i = 1到n)(3i + 2),但我不知道如何。这个总和来自哪里?
答案 0 :(得分:0)
第1行执行1次。但是,它执行1次初始化,n次比较和增量。
第2行执行n次。但是,它执行n初始化,n *(n + 1)/ 2比较和增量。
第3行执行n *(n + 1)/ 2次。由于http://mathcentral.uregina.ca/qq/database/qq.02.06/jo1.html
因此总操作数为1 + 3n + 3n *(n + 1)/ 2.
答案 1 :(得分:0)
外部for
语句执行一次...虽然它迭代n
次(由于开始条件,结束条件和更新部分)。这是“第1行”。
对于外循环的每次迭代,内部for
语句将执行一次。外部循环迭代n
次,因此内部for
语句执行n
次。这是“第2行”。
"hi"
将被写入一次。对于外循环的每次迭代,内循环将迭代n-i+1
次(产生i
的值)。这意味着打印"hi"
的次数为n
(i == 1
)+ n-1
(i == 2
)+ .... {{1 (1
)。添加它们,相当于i==n
次。这是“第3行”。