Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ปริศนาห่วงซ้อน?


ในส่วนนี้เราจะเห็นปัญหาหนึ่งที่น่าสนใจ เราจะเห็นรหัสสองส่วน ทั้งสองมีลูปซ้อนกันสองลูป เราต้องระบุว่าอันไหนจะวิ่งเร็วกว่ากัน (เราจะถือว่าคอมไพเลอร์ไม่ได้ปรับโค้ดให้เหมาะสม)

ส่วนที่ 1

for(int i = 0; i < 10; i++){
   for(int j = 0; j<100; j++){
      //code
   }
}

ส่วนที่ 2

for(int i = 0; i < 100; i++){
   for(int j = 0; j<10; j++){
      //code
   }
}

รหัสทั้งสองจะทำงานในจำนวนเท่ากัน รหัสภายในสองลูปจะดำเนินการ 10,000 ครั้งในทั้งสองกรณี แต่ถ้าเราพิจารณาดีๆ เราจะเข้าใจได้ว่าโค้ดที่สองทำงานมากกว่าโค้ดแรก ในโค้ดแรก วงในจะถูกดำเนินการ 10 ครั้ง ดังนั้นสำหรับการเริ่มต้น การตรวจสอบเงื่อนไข และการดำเนินการที่เพิ่มขึ้น จะดำเนินการ 10 ครั้ง แต่สำหรับรหัสที่สอง วงในจะถูกดำเนินการ 100 ครั้ง ดังนั้นการเริ่มต้น การตรวจสอบเงื่อนไข และการดำเนินการที่เพิ่มขึ้นจะดำเนินการ 100 ครั้ง จึงใช้เวลานานกว่าครั้งแรก