我遇到了一个问题,我在这两个算法上有一系列问题,但是我一直在努力理解大O表示法的概念,我觉得这很简单。
本质上,我需要找出O的大记号是什么,每种算法要解决一百万个和200万个运算的问题需要花费多长时间。
算法A:
SET sum TO 0
FOR i=1 to size
FOR j=1 to 10000
sum=sum+1
算法B:
SET sum TO 0
FOR i=1 to size
FOR j=1 to size
sum = sum + 1
这是假设计算机每秒可以执行一百万次操作
答案 0 :(得分:1)
从您的帖子的最后一句话开始:算法的时间复杂度不取决于计算机每秒可以执行的操作数。没关系。
我假设<!DOCTYPE DOC PUBLIC "-//USA-DOD//DTD 38784STD-BV7//EN"[
<!ENTITY cdcs_2-24.wmf SYSTEM "graphics\CDCS_2-24.wmf" NDATA wmf>
<!ENTITY cdcs_2-5.wmf SYSTEM "graphics\CDCS_2-5.wmf" NDATA wmf>
<!ENTITY cdcs_4-48.wmf SYSTEM "graphics\CDCS_4-48.wmf" NDATA wmf>
<!ENTITY cdcs_3-5.wmf SYSTEM "graphics\CDCS_3-5.wmf" NDATA wmf>
<!ENTITY cdcs_2-19.wmf SYSTEM "graphics\CDCS_2-19.wmf" NDATA wmf>
<!NOTATION png SYSTEM "png">
<!NOTATION svg SYSTEM "svg">
<!NOTATION bmp SYSTEM "bmp">
<!ENTITY cdcs_2-2a.wmf SYSTEM "graphics\CDCS_2-2A.wmf" NDATA wmf>
<!ENTITY cdcs_5-35.wmf SYSTEM "graphics\CDCS_5-35.wmf" NDATA wmf>
<doc service="xs" docid="BKw46" docstat="formal" verstatpg="ver" cycle="1" chglevel="1">
<front numcols="1">
<idinfo>
<?Pub Lcl _divid="100" _parentid="0">
<tmidno>Life with Pets</tmidno>
<chgnum>Change 1</chgnum>
<chgdate>2 August 2018</chgdate>
<chghistory>
<chginfo>
<chgtxt>Change 1</chgtxt>
<date>2 August 2018</date>
</front>
<body numcols="1">
<chapter>
<title>This is chapter 1</title>
<para0>
<title>Climb the ladder immedietly</title>
<para>Retrieve the cat.</para></para0></chapter>
<chapter>
<title>Don't forget to feed the dog</title>
<para0>
<title>Prep for puppies</title>
<para>Puppies are cute</para></para0>
</chapter>
</body>
</doc>
语句位于内部sum = sum + 1
循环内的 内-缩进并不明确。
两种算法都执行FOR
多次。我们可能认为一次执行sum = sum + 1
花费的时间是恒定的。
现在,两种算法之间的区别是内部循环运行的次数。在第一个版本中,这是一个常量(10000)。这意味着一个完整的sum = sum + 1
循环的执行将花费固定的时间。它不取决于 size 。
这意味着第一个算法只有一个取决于 size 的循环:它执行内部循环 size 次。因此,时间复杂度为 O(size)。
但是在第二个版本中,内循环 也运行 size 次。因此,它显然取决于 size 。现在,最里面的语句的执行次数为 size 2 。因此,时间复杂度为 O(size 2 )。