สิ่งที่ถูกต้องเพื่อให้คอมพิวเตอร์ที่ซับซ้อน เพียงเล็กน้อยของคำเตือน ก่อนที่เราจะดำน้ำใน far-- เกินไป นี้อาจจะเป็นหนึ่งใน สิ่งที่มากที่สุดคณิตศาสตร์หนัก เราพูดคุยเกี่ยวกับใน CS50 หวังว่ามันจะไม่เป็นอย่างท่วมท้นเกินไป และเราจะพยายามและแนะนำคุณ ผ่านกระบวนการ แต่ เพียงเล็กน้อยของคำเตือนที่เป็นธรรม มีนิด ๆ หน่อย ๆ เป็น คณิตศาสตร์เกี่ยวข้องกับที่นี่ สิทธิทั้งหมดดังนั้นในการที่จะทำให้ การใช้ทรัพยากรคอมพิวเตอร์ของเรา ใน world-- จริงก็จริงๆ สำคัญที่จะเข้าใจขั้นตอนวิธีการ และวิธีการประมวลผลข้อมูล ถ้าเรามีจริงๆ อัลกอริทึมที่มีประสิทธิภาพเรา สามารถลดปริมาณของทรัพยากร เราได้มีการจัดการกับมัน ถ้าเรามีขั้นตอนวิธีการที่ จะใช้เวลามากในการทำงาน ในการประมวลผลจริงๆ ชุดข้อมูลขนาดใหญ่ก็ จะต้องมีมากขึ้น และทรัพยากรมากขึ้นซึ่ง คือเงิน, RAM, ทุกชนิดของสิ่งที่ ดังนั้นความสามารถในการวิเคราะห์ ขั้นตอนวิธีการใช้ชุดเครื่องมือนี้ โดยทั่วไปจะถามคำถามของ วิธีการที่ไม่ขนาดขั้นตอนวิธีนี้ ในขณะที่เราโยนข้อมูลมากขึ้นที่มันได้หรือไม่ ใน CS50, จำนวนของข้อมูลที่เรา การทำงานร่วมกับมีขนาดเล็กสวย โดยทั่วไปโปรแกรมของเราจะไป ที่จะทำงานในสองหรือ less-- อาจจะมากน้อย โดยเฉพาะอย่างยิ่งในช่วงต้น แต่คิดเกี่ยวกับ บริษัท ที่ข้อเสนอ มีหลายร้อยล้านของลูกค้า และพวกเขาต้องการที่จะดำเนินการ ว่าข้อมูลของลูกค้า ขณะที่จำนวนของลูกค้าที่พวกเขา มีได้รับใหญ่และขนาดใหญ่ มันจะต้องใช้ ทรัพยากรมากขึ้น วิธีทรัพยากรอื่น ๆ อีกมากมาย? ดีที่ขึ้นอยู่กับว่า เราจะวิเคราะห์ขั้นตอนวิธี โดยใช้เครื่องมือในกล่องเครื่องมือนี้ เมื่อเราพูดคุยเกี่ยวกับความซับซ้อนของ algorithm-- ซึ่งบางครั้งคุณจะ ได้ยินมันเรียกว่าเวลา ความซับซ้อนหรือความซับซ้อนพื้นที่ แต่เรากำลังจะ ที่จะเรียก complexity-- โดยทั่วไปเรากำลังพูดคุยเกี่ยวกับ สถานการณ์ที่เลวร้ายที่สุดกรณี ได้รับการกองที่เลวร้ายที่สุดแน่นอนของ ข้อมูลที่เราจะได้รับการขว้างปาที่มัน วิธีการขั้นตอนวิธีนี้จะ ดำเนินการหรือจัดการกับข้อมูลที่? โดยทั่วไปเราเรียกว่าเลวร้ายที่สุดกรณี รันไทม์ของอัลกอริทึมใหญ่-O ดังนั้นขั้นตอนวิธีการอาจจะกล่าวได้ว่า ทำงานในโอ n หรือโอ n ยกกำลังสอง และอื่น ๆ เกี่ยวกับสิ่งที่ เหล่านั้นหมายถึงในครั้งที่สอง บางครั้งแม้ว่าเราจะดูแล เกี่ยวกับกรณีที่ดีที่สุด หากข้อมูลมีทุกอย่างที่เราต้องการ ว่ามันจะเป็นและมันก็เป็นอย่างสมบูรณ์แบบ และเราก็ส่งที่สมบูรณ์แบบนี้ ชุดของข้อมูลผ่านขั้นตอนวิธีการของเรา ว่ามันจะจัดการในสถานการณ์ที่? บางครั้งเราหมายถึงว่า โอเมก้าขนาดใหญ่ดังนั้นในทางตรงกันข้ามกับใหญ่โอ เรามีขนาดใหญ่โอเมก้า บิ๊กโอเมก้าสำหรับกรณีที่ดีที่สุด Big-O สำหรับสถานการณ์ที่เลวร้ายที่สุดกรณี โดยทั่วไปเมื่อเราพูดคุยเกี่ยวกับ ความซับซ้อนของขั้นตอนวิธีการ เรากำลังพูดถึง สถานการณ์ที่เลวร้ายที่สุดกรณี ดังนั้นเก็บที่ในใจ และในชั้นนี้เรากำลังจะโดยทั่วไป ที่จะออกจากการวิเคราะห์กันอย่างเข้มงวด มีวิทยาศาสตร์และสาขาที่มี อุทิศให้กับชนิดของสิ่งนี้ เมื่อเราพูดถึงเหตุผล ผ่านขั้นตอนวิธี ซึ่งเราจะทำชิ้นโดยชิ้นส่วนสำหรับหลาย ๆ คน ขั้นตอนวิธีการที่เราพูดคุยเกี่ยวกับในชั้นเรียน เรากำลังจริงๆเพียงแค่พูดคุยเกี่ยวกับ เหตุผลผ่านมันด้วยความรู้สึกร่วมกัน ไม่ได้อยู่กับสูตรหรือบทพิสูจน์ หรืออะไรอย่างนั้น ดังนั้นไม่ต้องกังวลเราจะไม่เป็น กลายเป็นชั้นเรียนคณิตศาสตร์ใหญ่ ดังนั้นผมจึงบอกว่าเราดูแลเกี่ยวกับความซับซ้อน เพราะจะถามคำถามที่ว่า ขั้นตอนวิธีการของเราจะจัดการกับขนาดใหญ่และ ชุดข้อมูลขนาดใหญ่ที่ถูกโยนไปที่พวกเขา ดีสิ่งที่เป็นชุดข้อมูลที่? สิ่งที่ผมหมายถึงเมื่อผมบอกว่า? มันหมายความว่าอะไรก็ตามที่ทำให้ส่วนใหญ่ ความรู้สึกในบริบทที่จะซื่อสัตย์ ถ้าเรามีขั้นตอนวิธีการที่ กระบวนการ Strings-- เราอาจจะ พูดคุยเกี่ยวกับขนาดของสตริง นั่นคือข้อมูล set-- ขนาดจำนวน ของตัวละครที่ทำขึ้นสตริง ถ้าเราพูดคุยเกี่ยวกับ อัลกอริทึมที่ประมวลผลไฟล์ เราอาจจะมีการพูดคุยเกี่ยวกับวิธีการ หลายกิโลไบต์ประกอบด้วยแฟ้มที่ และนั่นคือข้อมูลที่กำหนด ถ้าเราพูดคุยเกี่ยวกับขั้นตอนวิธี ที่จัดการอาร์เรย์มากกว่าปกติ เช่นการเรียงลำดับขั้นตอนวิธีการ หรือการค้นหาขั้นตอนวิธี เราอาจจะพูดคุยเกี่ยวกับจำนวน ขององค์ประกอบที่ประกอบด้วยอาร์เรย์ ตอนนี้เราสามารถวัด algorithm-- โดยเฉพาะอย่างยิ่ง เมื่อฉันบอกว่าเราสามารถทำได้ ขั้นตอนวิธีการวัดที่ฉัน หมายถึงการที่เราสามารถวัดว่า ทรัพยากรจำนวนมากก็จะขึ้น ไม่ว่าจะเป็นทรัพยากรเหล่านั้นมีหลายวิธี ไบต์ของ RAM-- หรือเมกะไบต์ RAM จะใช้ หรือวิธีการมากเวลาที่ใช้ในการทำงาน และเราสามารถเรียกสิ่งนี้ วัดพลฉของ n ที่ n คือจำนวนของ องค์ประกอบในชุดข้อมูล และฉของ n เป็นจำนวน somethings วิธีการหลายหน่วยของทรัพยากรไม่ มันต้องมีการประมวลผลข้อมูลที่ ตอนนี้เราจะไม่สนใจ เกี่ยวกับสิ่งที่ฉของ n คือว่า ในความเป็นจริงเรามากไม่ค่อย will-- แน่นอนจะไม่เคยอยู่ในฉัน class-- นี้ ดำน้ำในลึกจริงๆใด ๆ วิเคราะห์สิ่งที่ฉของ n คือ เรากำลังจะพูดคุยเกี่ยวกับสิ่งที่เอฟของ n คือประมาณหรือสิ่งที่มีแนวโน้มที่จะ และแนวโน้มของอัลกอริทึมที่มี กำหนดโดยคำสั่งซื้อสูงสุด และเราสามารถเห็นสิ่งที่ฉัน หมายถึงว่าด้วยการ ดูที่ตัวอย่างที่เป็นรูปธรรมมากขึ้น ดังนั้นขอบอกว่าเรามี ขั้นตอนวิธีการที่แตกต่างกันสาม คนแรกที่จะใช้เวลา n คีบบางหน่วยของทรัพยากร ในการประมวลผลชุดข้อมูลขนาด n เรามีขั้นตอนวิธีที่สองที่ต้องใช้เวลา n คีบยกกำลังสองบวกทรัพยากร n ในการประมวลผลชุดข้อมูลขนาด n และเรามีสาม อัลกอริทึมที่ทำงาน in-- ว่า จะขึ้นคีบ n ลบยืด 8N บวก 20 n หน่วยของทรัพยากร ที่จะดำเนินการขั้นตอนวิธี กับชุดข้อมูลขนาด n ตอนนี้อีกครั้งเราจะไม่ได้ไป จะได้รับในระดับของรายละเอียดนี้ ฉันจริงๆเพียงแค่ต้องเหล่านี้ขึ้น นี่เป็นตัวอย่างของจุดหนึ่ง ว่าฉันจะเป็น ทำให้ในครั้งที่สองซึ่ง คือการที่เราดูแลเท่านั้นจริงๆ เกี่ยวกับแนวโน้มของสิ่งที่ เป็นชุดข้อมูลได้รับใหญ่ ดังนั้นหากข้อมูลชุดที่มีขนาดเล็กมี จริงความแตกต่างใหญ่สวย ในขั้นตอนวิธีการเหล่านี้ อัลกอริทึมที่สามมีงาน ใช้เวลา 13 ครั้งอีกต่อไป 13 ครั้งจำนวนของทรัพยากร เพื่อให้ทำงานได้เมื่อเทียบกับครั้งแรกหนึ่ง หากตั้งข้อมูลของเรามีขนาด 10 ซึ่ง มีขนาดใหญ่ แต่ไม่จำเป็นต้องใหญ่ เราจะเห็นว่ามี จริงบิตที่แตกต่าง อัลกอริทึมที่สาม กลายเป็นมีประสิทธิภาพมากขึ้น มันเป็นเรื่องจริง 40% - หรือ 60% มีประสิทธิภาพมากขึ้น มันต้องใช้เวลา 40% ระยะเวลาที่ มันสามารถ run-- ก็สามารถใช้ 400 หน่วยของทรัพยากร ในการประมวลผลชุดข้อมูลที่มีขนาด 10 ในขณะที่แรก อัลกอริทึมโดยคมชัด ใช้เวลา 1,000 หน่วยของทรัพยากร ในการประมวลผลชุดข้อมูลที่มีขนาด 10 แต่มองสิ่งที่เกิดขึ้นเป็น ตัวเลขที่เราได้รับที่ยิ่งใหญ่ ตอนนี้ความแตกต่าง ระหว่างขั้นตอนวิธีการเหล่านี้ เริ่มต้นที่จะกลายเป็นเล็ก ๆ น้อย ๆ ที่เห็นได้ชัดน้อย และความจริงที่ว่ามี สั่งซื้อที่ลดลง terms-- หรือมากกว่า ข้อตกลงกับ exponents-- ต่ำ เริ่มต้นที่จะกลายเป็นที่ไม่เกี่ยวข้อง หากชุดข้อมูลที่มีขนาด 1000 และขั้นตอนวิธีแรก ทำงานในขั้นตอนพันล้าน และอัลกอริทึมที่สองทำงานใน พันล้านและล้านขั้นตอน และขั้นตอนวิธีการทำงานที่สาม ในเพียงขี้อายของพันล้านขั้นตอน มันสวยมากเป็นพันล้านขั้นตอน ผู้แง่ล่างเพื่อเริ่มต้น ที่จะกลายเป็นที่ไม่เกี่ยวข้องจริงๆ และเพียงแค่ไปจริงๆ ค้อนบ้าน point-- ถ้าใส่ข้อมูลที่มีขนาด million-- ทั้งสามเหล่านี้สวยมาก ใช้เวลาหนึ่งถ้า quintillion-- คณิตศาสตร์ของฉันอยู่ไม่ไกล correct-- การป้อนข้อมูลในการประมวลผลข้อมูล ขนาดล้าน นั่นเป็นจำนวนมากของขั้นตอน และความจริงที่ว่าหนึ่งในนั้นอาจจะ ใช้เวลาไม่กี่ 100,000 หรือคู่ 100 ล้านบาทเมื่อแม้แต่น้อย เรากำลังพูดถึงเกี่ยวกับตัวเลข ที่ big-- เป็นประเภทที่ไม่เกี่ยวข้อง พวกเขาทั้งหมดมีแนวโน้มที่จะใช้ ประมาณคีบ n, และเพื่อให้เราจริงจะดู ทุกขั้นตอนวิธีการเหล่านี้ ว่าเป็นคำสั่งของ n คีบหรือใหญ่-O ของ cubed n นี่คือรายการของบางส่วนของมากขึ้น เรียนคอมพิวเตอร์ที่ซับซ้อนที่พบบ่อย ที่เราจะได้พบในการ ขั้นตอนวิธีการทั่วไป และยังโดยเฉพาะใน CS50 เหล่านี้จะได้รับคำสั่งจาก โดยทั่วไปที่เร็วที่สุดที่ด้านบน โดยทั่วไปที่ช้าที่สุดที่ด้านล่าง ดังนั้นขั้นตอนวิธีการเวลาคงมีแนวโน้มที่ จะเป็นที่เร็วที่สุดโดยไม่คำนึงถึง ขนาดของ การป้อนข้อมูลที่คุณผ่านใน พวกเขามักจะใช้เวลาดำเนินการอย่างใดอย่างหนึ่ง หนึ่งหน่วยของทรัพยากรที่จะจัดการกับ มันอาจจะเป็นที่ 2 มันอาจ 3 ก็อาจจะมี 4 แต่ก็มีจำนวนคงที่ มันไม่ได้แตกต่างกันไป อัลกอริทึมเวลาลอการิทึม จะดีกว่าเล็กน้อย และเป็นตัวอย่างที่ดีจริงๆ อัลกอริทึมเวลาลอการิทึม คุณเคยเห็นอย่างแน่นอนโดยขณะนี้คือ ฉีกจากสมุดโทรศัพท์ เพื่อหาสิ่งที่ไมค์สมิ ธ ในสมุดโทรศัพท์ เราตัดปัญหาในช่วงครึ่งปี และเพื่อให้เป็น n ขนาดใหญ่ได้รับ และมีขนาดใหญ่และ larger-- ในความเป็นจริงเวลาที่คุณเป็นสองเท่าทุก n จะใช้เวลาเพียงหนึ่งในขั้นตอนอื่น ๆ ดังนั้นที่ดีขึ้นมาก กว่าการพูด, เส้นเวลา ซึ่งถ้าคุณเป็นสองเท่า n มัน ใช้เวลาสองเท่าของจำนวนของขั้นตอน หากคุณสาม n ก็จะใช้เวลา สามจำนวนของขั้นตอน ขั้นตอนหนึ่งต่อหน่วย แล้วสิ่งที่ได้รับ more-- เล็ก ๆ น้อย ๆ น้อยมากน้อยจากที่นั่น คุณมีเวลาจังหวะเชิงเส้นบางครั้ง เข้าสู่ระบบที่เรียกว่าเส้นเวลาหรือเพียงแค่ n log n และเราจะเป็นตัวอย่าง ขั้นตอนวิธีว่า วิ่งใน n ล็อก n ซึ่งก็ยังดี กว่า time-- กำลังสอง n ยกกำลังสอง หรือเวลาพหุนาม n สอง จำนวนใดมากกว่าสอง หรือเวลาที่ชี้แจงซึ่ง แม้แต่ C worse-- เพื่อที่ n ดังนั้นบางจำนวนคงที่ยกขึ้นไป อำนาจของขนาดของการป้อนข้อมูล ดังนั้นหากมี 1,000-- ถ้า การป้อนข้อมูลที่มีขนาด 1,000 มันจะใช้เวลา C ถึงอำนาจ 1000 มันมากเลวร้ายยิ่งกว่าเวลาพหุนาม ปัจจัยเวลาเป็นยิ่งแย่ลง และในความเป็นจริงมีจริงๆ ขั้นตอนวิธีการที่มีอยู่เวลาที่สิ้นสุด เช่นที่เรียกว่าโง่ที่มี sort-- งานคือการสุ่มสับเปลี่ยนอาร์เรย์ และจากนั้นตรวจสอบเพื่อดู ไม่ว่าจะเป็นการเรียง และถ้ามันไม่ได้แบบสุ่ม สับเปลี่ยนแถวอีกครั้ง และตรวจสอบเพื่อดูว่ามันเรียง และในขณะที่คุณอาจจะสามารถ imagine-- คุณสามารถจินตนาการสถานการณ์ ซึ่งในกรณีที่เลวร้ายที่สุดที่จะ ไม่จริงเริ่มต้นด้วยอาร์เรย์ ขั้นตอนวิธีการที่จะทำงานตลอด และเพื่อที่จะเป็น อัลกอริทึมเวลาที่ไม่มีที่สิ้นสุด หวังว่าคุณจะไม่ได้เขียน เวลาปัจจัยหรือไม่มีที่สิ้นสุด ขั้นตอนวิธีการใน CS50 ดังนั้นลองมาเล็ก ๆ น้อย ๆ ดูที่บางส่วนคอนกรีตที่เรียบง่าย เรียนคอมพิวเตอร์ที่ซับซ้อน ดังนั้นเราจึงมี example-- หรือสองตัวอย่าง here-- อัลกอริทึมเวลาคงที่ ซึ่งมักจะใช้เวลา การทำงานครั้งเดียวในกรณีที่เลวร้ายที่สุด ดังนั้น example-- แรก เรามีฟังก์ชั่น ที่เรียกว่า 4 สำหรับคุณที่ ใช้เวลามากมายขนาด 1,000 แต่แล้วเห็นได้ชัดว่า ไม่จริงดู ที่ it-- ไม่จริงๆดูแลสิ่งที่ ภายในของมันของอาเรย์ที่ เสมอเพียงผลตอบแทนที่สี่ ดังนั้นขั้นตอนวิธีการที่ แม้จะมีความจริงที่ว่ามัน ใช้เวลา 1,000 องค์ประกอบไม่ได้ ทำอะไรกับพวกเขา เพียงแค่ผลตอบแทนที่สี่ ก็มักจะเป็นขั้นตอนเดียว ในความเป็นจริงเพิ่ม 2 nums-- ที่ ที่เราเคยเห็นมาก่อนเป็น well-- เพียงกระบวนการจำนวนเต็ม มันไม่ได้เป็นขั้นตอนเดียว มันเป็นขั้นตอนทั้งคู่จริง คุณจะได้รับคุณจะได้รับ B, คุณเพิ่มพวกเขา ร่วมกันและคุณส่งออกผล ดังนั้นจึงเป็นขั้นตอนที่ 84 แต่ก็มักจะคงที่ โดยไม่คำนึงถึงหรือ คุณต้องได้รับรับขเพิ่ม พวกเขาร่วมกันออกผล เพื่อให้เป็นอัลกอริทึมเวลาคง นี่คือตัวอย่างของหนึ่ง algorithm-- เส้นเวลา อัลกอริทึมที่ gets-- ที่ใช้เวลา ขั้นตอนอีกหนึ่งอาจจะเป็น เป็นข้อมูลของคุณเติบโตขึ้นโดย 1 ดังนั้นขอบอกว่าเรากำลังมองหา จำนวน 5 ภายในอาร์เรย์ คุณอาจมีสถานการณ์ที่ คุณสามารถค้นหาได้อย่างเป็นธรรมในช่วงต้น แต่คุณยังสามารถมี สถานการณ์ที่มัน อาจจะเป็นองค์ประกอบสุดท้ายของอาร์เรย์ ในอาร์เรย์ของขนาด 5 ถ้า เรากำลังมองหาหมายเลขที่ 5 มันจะใช้เวลา 5 ขั้นตอน และในความเป็นจริงคิดว่ามี 5 ไม่ได้ทุกที่ในอาร์เรย์นี้ จริงเรายังต้องมองไปที่ ทุกองค์ประกอบหนึ่งของอาร์เรย์ เพื่อตรวจสอบ หรือไม่ว่าจะมี 5 ดังนั้นในกรณีที่เลวร้ายที่สุดซึ่งก็คือว่า องค์ประกอบเป็นครั้งสุดท้ายในอาร์เรย์ หรือไม่อยู่ที่ทุกคน เรายังคงต้องมองไปที่ ทุกองค์ประกอบที่ n และเพื่อให้ขั้นตอนวิธีนี้ วิ่งในเส้นเวลา คุณสามารถยืนยันว่าโดย คะเนนิด ๆ หน่อย ๆ ด้วยการพูดว่า ถ้าเรามีอาร์เรย์ที่ 6 องค์ประกอบและ เรากำลังมองหาหมายเลขที่ 5 มันอาจจะใช้เวลา 6 ขั้นตอน ถ้าเรามีอาร์เรย์ 7 องค์ประกอบและ เรากำลังมองหาหมายเลขที่ 5 มันอาจจะใช้เวลาขั้นตอนที่ 7 ในขณะที่เราเพิ่มองค์ประกอบหนึ่งที่จะของเรา อาเรย์ก็จะใช้เวลามากขึ้นในขั้นตอนเดียว นั่นเป็นวิธีการเชิงเส้น ในกรณีที่เลวร้ายที่สุด คู่คำถามอย่างรวดเร็วสำหรับคุณ อะไรคือสิ่งที่ runtime-- ที่เลวร้ายที่สุดกรณีรันไทม์ ของตัวอย่างนี้โดยเฉพาะของรหัส? ดังนั้นผมจึงมีวง 4 ที่นี่ที่ทำงาน จากเจเท่ากับ 0 ทั้งหมดทางขึ้นไปยังม. และสิ่งที่ฉันเห็นที่นี่เป็นที่ ร่างกายของวงทำงานในเวลาคง ดังนั้นการใช้คำศัพท์ที่ว่า เราได้พูดคุยแล้ว about-- สิ่งที่ จะเป็นกรณีที่เลวร้ายที่สุด รันไทม์ของขั้นตอนวิธีนี้หรือไม่? ใช้เป็นครั้งที่สอง ส่วนด้านในของวง วิ่งในเวลาคง และส่วนที่ด้านนอกของ ห่วงจะไปทำงานครั้งเมตร ดังนั้นสิ่งที่รันไทม์เลวร้ายที่สุดกรณีที่นี่? คุณคิดว่าใหญ่ของ O m? คุณจะได้รับสิทธิ วิธีการเกี่ยวกับคนอื่น? เวลาที่เรามีนี้ วงในของวง เรามีห่วงด้านนอก ที่ไหลจากศูนย์ถึงพี และเรามีห่วงด้านในที่ทำงาน จากศูนย์ถึงพีและภายในของที่ ผมว่าร่างกาย ห่วงทำงานในเวลาคง ดังนั้นสิ่งที่รันไทม์เลวร้ายที่สุดกรณี ของตัวอย่างนี้โดยเฉพาะของรหัส? ดีอีกครั้งที่เรามี ห่วงนอกที่ทำงานครั้งหน้า และแต่ละซ้ำ time-- ของวงที่ค่อนข้าง เรามีห่วงด้านใน ที่ยังทำงานครั้งหน้า และจากนั้นภายในที่มีคือ ตัวอย่างเล็ก ๆ น้อย ๆ คงมี time-- ดังนั้นหากเรามีห่วงด้านนอกที่ วิ่งครั้งภายในพีซึ่งเป็น ห่วงภายในที่ วิ่งพี times-- สิ่งที่เป็น ที่เลวร้ายที่สุดกรณีรันไทม์ ของตัวอย่างของรหัสนี้หรือไม่? คุณคิดว่าใหญ่โอพียืด? ฉันลอยด์ดั๊ก นี่คือ CS50