[เล่นเพลง] DOUG LLOYD: เรียงลำดับการคัดเลือกเป็น อัลกอริทึมที่เป็นคุณอาจคาดหวัง เรียงลำดับชุดขององค์ประกอบ และขั้นตอนวิธีการเรียกคืน เป็นขั้นตอนโดยขั้นตอนการตั้งค่า คำแนะนำสำหรับการงาน เรียงลำดับในการเลือก แนวคิดพื้นฐานคือนี้ หาองค์ประกอบไม่ได้เรียงลำดับและมีขนาดเล็กที่สุด เพิ่มไปยังจุดสิ้นสุดของรายการที่เรียงลำดับ ได้อย่างมีประสิทธิภาพสิ่งนี้จะสร้าง รายการที่เรียงลำดับองค์ประกอบหนึ่งที่เวลา ทำลายมันลงไป pseudocode เราสามารถระบุขั้นตอนวิธีนี้ ดังต่อไปนี้ให้ทำซ้ำเช่นนี้จนกว่า ไม่มีองค์ประกอบไม่ได้เรียงลำดับยังคงอยู่ ค้นหาผ่านบ้านทั่วไป ข้อมูลเพื่อหาค่าที่น้อยที่สุด แล้วสลับค่าที่น้อยที่สุดด้วย องค์ประกอบแรกของส่วนที่ไม่ได้เรียงลำดับ มันอาจช่วยให้เห็นภาพนี้ ดังนั้นลองมาดูที่นี้ ดังนั้นนี้ผมยืนยันการเป็น อาเรย์ไม่ได้เรียงลำดับและฉันได้ ระบุว่าโดยระบุว่าทั้งหมด ขององค์ประกอบที่มีสีแดง พวกเขาจะไม่เรียงยัง นี่คือทั้งหมด ส่วนที่ไม่ได้เรียงลำดับของอาร์เรย์ ถ้าอย่างนั้นเราไปผ่านขั้นตอนของ เลือกการเรียงลำดับการจัดเรียงอาร์เรย์นี้ ดังนั้นอีกครั้งเราจะทำซ้ำ จนไม่ได้เรียงลำดับองค์ประกอบยังคงไม่มี เราจะค้นหาผ่าน ข้อมูลเพื่อหาค่าที่น้อยที่สุด แล้วสลับค่าที่กับ องค์ประกอบแรกของส่วนที่ไม่ได้เรียงลำดับ ตอนนี้อีกทั้ง อาร์เรย์เป็นส่วนที่ไม่ได้เรียงลำดับ ทุกองค์ประกอบสีแดงที่มีการเรียงลำดับ ดังนั้นเราค้นหาผ่านและ เราพบว่าค่าที่น้อยที่สุด เราเริ่มต้นที่จุดเริ่มต้น เราไปที่ท้ายที่สุด เราพบว่าค่าที่น้อยที่สุดคือหนึ่ง เพื่อให้เป็นส่วนหนึ่ง และจากนั้นส่วนที่สองสลับค่าที่มี องค์ประกอบแรกของส่วนที่ไม่ได้เรียงลำดับ, หรือองค์ประกอบสีแดงเป็นครั้งแรก ในกรณีนี้ที่จะเป็น ห้าดังนั้นเราจึงสลับหนึ่งในห้า เมื่อเราทำเช่นนี้เราสามารถ สายตาเห็นว่าเราได้ ย้ายที่เล็กที่สุดองค์ประกอบมูลค่า ของอาร์เรย์ที่จะเริ่มต้น การเรียงลำดับได้อย่างมีประสิทธิภาพในสภาพแวดล้อมที่ และเพื่อให้เราสามารถยืนยันได้แน่นอน และรัฐที่หนึ่งจะเรียงลำดับ และเพื่อให้เราจะแสดงให้เห็นส่วนที่เรียง ของอาร์เรย์ของเราด้วยการระบายสีมันสีฟ้า ตอนนี้เราก็ทำซ้ำขั้นตอนอีกครั้ง เราค้นหาผ่านส่วนที่ไม่ได้เรียงลำดับของ อาเรย์เพื่อหาองค์ประกอบที่เล็กที่สุด ในกรณีนี้ก็สอง เราสลับกับครั้งแรก องค์ประกอบของส่วนที่ไม่ได้เรียงลำดับ ในกรณีนี้ทั้งสองยังเกิดขึ้นเป็น องค์ประกอบแรกของส่วนที่ไม่ได้เรียงลำดับ ดังนั้นเราจึงสลับสองกับตัวเอง ซึ่งจริงๆเพียงใบสอง มันอยู่ที่ไหนและจะเรียง อย่างต่อเนื่องในวันที่เราค้นหาผ่าน เพื่อหาองค์ประกอบที่เล็กที่สุด มันเป็นสาม เราสลับกับครั้งแรก องค์ประกอบซึ่งเป็นห้า และตอนนี้สามจะถูกจัดเรียง เราค้นหาผ่านอีกครั้งและเรา หาองค์ประกอบที่เล็กที่สุดคือสี่ เราสลับกับองค์ประกอบแรกของ ส่วนที่ไม่ได้เรียงลำดับและตอนนี้ทั้งสี่จะถูกจัดเรียง เราพบว่าห้าคือ องค์ประกอบที่เล็กที่สุด เราสลับกับครั้งแรก องค์ประกอบของส่วนที่ไม่ได้เรียงลำดับ และตอนนี้จะถูกจัดเรียงห้า และแล้วในที่สุดของเรา ส่วนที่ไม่ได้เรียงลำดับประกอบด้วย เพียงองค์ประกอบเดียว เพื่อให้เราค้นหาผ่าน และเราพบว่าหกเป็น ที่เล็กที่สุดและในความเป็นจริงเพียงส่วนประกอบ และจากนั้นเราสามารถระบุว่ามันจะถูกจัดเรียง และตอนนี้เราได้เปลี่ยนอาร์เรย์ของเรา จากการไม่ได้เรียงลำดับได้อย่างสมบูรณ์ สีแดงที่จะเรียงอย่างสมบูรณ์ สีฟ้าโดยใช้การเลือกการจัดเรียง ดังนั้นสิ่งที่สถานการณ์กรณีที่เลวร้ายที่สุดที่นี่? ได้ดีในที่เลวร้ายที่สุดแน่นอน กรณีที่เราจะต้องดูมากกว่า ทุกองค์ประกอบของอาร์เรย์จะ หาองค์ประกอบไม่ได้เรียงลำดับที่เล็กที่สุด และเราจะต้องทำซ้ำ กระบวนการนี​​้ครั้ง n ครั้งเดียวสำหรับแต่ละองค์ประกอบของอาร์เรย์ เพราะเราเพียง แต่ในขั้นตอนวิธีนี้ การจัดเรียงองค์ประกอบหนึ่งในเวลา สถานการณ์กรณีที่ดีที่สุดคืออะไร? ดีมันเหมือนกันใช่มั้ย? เราจริงยังคงต้องก้าวผ่าน ทุกองค์ประกอบหนึ่งของอาร์เรย์ เพื่อยืนยันว่ามันคือ ในความเป็นจริงองค์ประกอบที่เล็กที่สุด ดังนั้นรันไทม์กรณีที่เลวร้ายเรา ต้องทำซ้ำกระบวนการ n ครั้ง ครั้งเดียวสำหรับแต่ละองค์ประกอบ n และในกรณีที่ดีที่สุด เราจะต้องทำเช่นเดียวกัน ดังนั้นคิดกลับไปของเรา กล่องคอมพิวเตอร์ที่ซับซ้อน, สิ่งที่คุณคิดว่าเป็นที่เลวร้ายที่สุด รันไทม์กรณีสำหรับการจัดเรียงการเลือก? อะไรที่คุณคิดว่าดีที่สุด รันไทม์กรณีสำหรับการจัดเรียงการเลือก? คุณคิดว่า Big O ของ n ยืด, และบิ๊กโอเมก้าสี่เหลี่ยมของ n? คุณจะได้รับสิทธิ เหล่านี้คือในความเป็นจริง กรณีที่เลวร้ายที่สุดและกรณีการทำงานที่ดีที่สุด ครั้งสำหรับการจัดเรียงการเลือก ฉันลอยด์ดั๊ก นี่คือ CS50