buffalo bear 2
ดู Blog ทั้งหมด

แบบฝึกหัด

เขียนโดย buffalo bear 2

6. ให้แสดงการคำนวณเวลาการประมวลของขั้นตอนวิธีต่อไปนี้อย่างละเอียด แล้วเขียนในรูปสัญลักษณ์บิ๊กโอ

6.1 sum = 0 ;

       for ( i = 0 ; i < N ; i++ )

                      for ( j = 0 ; j < N * N ; j++ )

                                    sum++ ;

คำตอบ  บรรทัดที่ 1  จากคำสั่ง  for  สำหรับลูปนอกให้ทำซ้ำ 
              บรรทัดที่ 2  n ครั้ง  และคำสั่ง for สำหรับลูปในให้ทำซ้ำ 
              บรรทัดที่  3  n ครั้ง เวลาที่ใช้เท่ากับ n*n =n( n กำลังสอง) 
              บรรทัดที่ 4  เขียนในรูปสัญลักษณ์บิ๊กโอ  คือ 0 n (n กำลังสอง)

6.2 int  factr ( int n )
 
                        int  t , answer ;

                        answer = 1

                         for ( t = 1 ; t <=  n ; t++ ) 

                                  answer = answer * t ;

                          return ( answer ) ;  

คำตอบ   1. บรรทัด 1 กำหนดค้าเริ่มต้นให้ตัวแปร  และบรรทัด 4  return   ผลลัพธ์ นับบรรทัดละ 1 หน่วยเวลา รวม 2 หน่วยเวลา
               2. บรรทัด 2 นับ 2n+2 หน่วยเวลา  คำสั่งบรรทัดนี้ประกอบด้วยการกำหนดค่าเริ่มต้นตัวแปร t นับ 1 หน่วยเวลา  การทดสอบเงื่อนไข t <= n ต้องทำซ้ำ n=1 นับ n + 1 หน่วยเวลา ส่วนคำสั่ง  increment  t++ ต้องทำซ้ำ n ครั้ง นับ n หน่วยเวลา จึงใช้เสลาทั้งหมด 2n+2 หน่วยเวลา 
               3. บรรทัด 3 นับ 2n หน่วยเวลา คำสั่งนี้ใช้เวลาเท่ากับ 2 หน่วยเวลา ประกอบด้วยการคูณ 1 ครั้ง และการกำหนดค่า 1 ครั้ง ถูกทำซ้ำ n ครั้ง รวมใช้เวลา 2n หน่วยเวลา
               4. รวมเวลาทั้งหมด 2+2n+2+2n  = 4n +4 เขียนฟังก์ชันในรูปสัญลักษณ์บิ๊กโอ คือ 0(n)   

ความคิดเห็น

ยังไม่มีความคิดเห็น