ในสาขาวิทยาการคอมพิวเตอร์ การเรียงลำดับแบบเลือก (อังกฤษ: selection sort) เป็นขั้นตอนวิธีการเรียงลำดับอย่างง่ายโดยใช้วิธีการเปรียบเทียบ ทำงานโดยการหาค่าเหมาะสมที่สุด (ค่ามากสุดหรือน้อยสุด) ที่อยู่ในรายการส่วนที่ยังไม่เรียงและนำค่าเหมาะที่สุดนั้นมาต่อท้ายของส่วนที่เรียงแล้ว ก็จะทำให้ส่วนที่เรียงแล้วมีขนาดใหญ่ขึ้นทีละหนึ่งในแต่ละรอบการทำงาน ทำเช่นนี้จนไม่มีส่วนที่ยังไม่เรียงก็เสร็จ แต่ด้วยประสิทธิภาพเมื่อเกิดกรณีทั่วไปที่ O(n2) ทำให้ไม่เหมาะที่จะใช้ในกรณีที่มีข้อมูลในรายการเป็นจำนวนมาก แต่ถ้าหากปรับปรุงการหาค่าเหมาะสมที่สุดในรายการด้วยแถวคอยลำดับความสำคัญที่ทำให้เกิดผลด้วยโครงสร้างข้อมูลแบบฮีปทวิภาคจะเรียกว่า ซึ่งมีประสิทธิภาพดีกว่าที่ O(n log n)
แสดงขั้นตอนการทำงานของการเรียงลำดับแบบเลือก; สีเหลือง คือ เรียงเรียบร้อยแล้ว ; สีแดง คือ ค่าที่น้อยที่สุดในปัจจุบัน ; สีฟ้า คือ ค่าที่กำลังพิจารณา | |
ประเภท | ขั้นตอนวิธีการเรียงลำดับ |
---|---|
โครงสร้างข้อมูล | รายการ |
ประสิทธิภาพเมื่อเกิดกรณีแย่ที่สุด | |
ประสิทธิภาพเมื่อเกิดกรณีดีที่สุด | |
ประสิทธิภาพเมื่อเกิดกรณีทั่วไป | |
ปริมาณความต้องการพื้นที่เมื่อเกิดกรณีแย่ที่สุด | ใช้พื่นที่ เพิ่มเติม |
การวิเคราะห์
ประสิทธิภาพ
การเรียงลำดับแบบเลือกไม่เพียงง่ายต่อการเข้าใจแล้ว ก็ง่ายต่อการวิเคราะห์ด้วยเพราะว่าข้อมูลที่อยู่ในรายการนั้นแทบไม่มีผลต่อการทำงานของการเรียงลำดับแบบเลือกเลย เริ่มด้วยส่วนของการเลือกค่าที่เหมาะสมที่สุด (มากสุดหรือน้อยสุด) จากข้อมูลส่วนที่ยังไม่เรียงนั้นหากในส่วนนี้มีข้อมูลอยู่ n ตัว ก็จะเปรียบเทียบอย่างน้อย n-1 ครั้ง เมื่อได้ค่าเหมาะสมที่สุดแล้วก็สลับกับตัวแรกของส่วนที่ยังไม่เรียง แล้วลดขนาดของส่วนที่ยังไม่เรียงลงหนึ่ง แล้วก็หาค่าเหมาะสมที่สุดใหม่อีกครั้ง และแน่นอนส่วนที่ยังไม่เรียงก็จะเหลือข้อมูล n-1 ตัว (ก็ต้องเปรียบเทียบ n-2 ครั้ง) ทำเช่นนั้นไปเรื่อยๆ ดังนั้นจำนวนการเปรียบเทียบทั้งหมดเท่ากับ
ตัวอย่างทีละขั้นตอน
การเรียงลำดับข้อมูลในรายการดังนี้ 33 2 12 44 7 14 29 ด้วยขั้นตอนวิธีแบบเลือก เริ่มต้นถือว่าทุกตัวในรายการยังไม่เรียง
ครั้งที่ 1 หาตัวที่มีค่าน้อยที่สุดในรายการส่วนที่ยังไม่เรียงนั่นคือ 11 สลับกับตัวแรกของข้อมูลที่ยังไม่เรียงนั่นคือ 2”
(64 25 12 22 11) (11 25 12 22 64)
ครั้งที่ 2 หาตัวที่มีค่าน้อยที่สุดนั่นคือ 12 สลับกับตัวแรกนั่นคือ 25
(11 25 12 22 64) (11 12 25 22 64)
ครั้งที่ 3 หาตัวที่มีค่าน้อยที่สุดนั่นคือ 22 สลับกับตัวแรกนั่นคือ 25
(11 12 25 22 64) (11 12 22 25 64)
เรียงเสร็จเรียบร้อย
การนำมาใช้งาน
ตัวอย่างรหัสเทียม
begin selectionSort ( A คือ แถวลำดับที่จะถูกเรียง ) for i = 0 to ขนาดของ(A) - 1 ให้ตำแหน่งของค่าน้อยสุด คือ i for j = i+1 to ขนาดของ(A) - 1 if A[j] < A[ตำแหน่งของค่าน้อยสุด] then ให้ตำแหน่งของค่าน้อยสุด คือ j end if end for สลับ A[i] กับ A[ตำแหน่งของค่าน้อยสุด] end for end
อ้างอิง
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
insakhawithyakarkhxmphiwetxr kareriyngladbaebbeluxk xngkvs selection sort epnkhntxnwithikareriyngladbxyangngayodyichwithikarepriybethiyb thanganodykarhakhaehmaasmthisud khamaksudhruxnxysud thixyuinraykarswnthiyngimeriyngaelanakhaehmaathisudnnmatxthaykhxngswnthieriyngaelw kcathaihswnthieriyngaelwmikhnadihykhunthilahnunginaetlarxbkarthangan thaechnnicnimmiswnthiyngimeriyngkesrc aetdwyprasiththiphaphemuxekidkrnithwipthi O n2 thaihimehmaathicaichinkrnithimikhxmulinraykarepncanwnmak aetthahakprbprungkarhakhaehmaasmthisudinraykardwyaethwkhxyladbkhwamsakhythithaihekidphldwyokhrngsrangkhxmulaebbhipthwiphakhcaeriykwa sungmiprasiththiphaphdikwathi O n log n kareriyngladbaebbeluxkaesdngkhntxnkarthangankhxngkareriyngladbaebbeluxk siehluxng khux eriyngeriybrxyaelw siaedng khux khathinxythisudinpccubn sifa khux khathikalngphicarnapraephthkhntxnwithikareriyngladbokhrngsrangkhxmulraykarprasiththiphaphemuxekidkrniaeythisudO n2 displaystyle O n 2 prasiththiphaphemuxekidkrnidithisudO n2 displaystyle O n 2 prasiththiphaphemuxekidkrnithwipO n2 displaystyle O n 2 primankhwamtxngkarphunthiemuxekidkrniaeythisudichphunthi O 1 displaystyle O 1 ephimetimkkarwiekhraahprasiththiphaph kareriyngladbaebbeluxkimephiyngngaytxkarekhaicaelw kngaytxkarwiekhraahdwyephraawakhxmulthixyuinraykarnnaethbimmiphltxkarthangankhxngkareriyngladbaebbeluxkely erimdwyswnkhxngkareluxkkhathiehmaasmthisud maksudhruxnxysud cakkhxmulswnthiyngimeriyngnnhakinswnnimikhxmulxyu n tw kcaepriybethiybxyangnxy n 1 khrng emuxidkhaehmaasmthisudaelwkslbkbtwaerkkhxngswnthiyngimeriyng aelwldkhnadkhxngswnthiyngimeriynglnghnung aelwkhakhaehmaasmthisudihmxikkhrng aelaaennxnswnthiyngimeriyngkcaehluxkhxmul n 1 tw ktxngepriybethiyb n 2 khrng thaechnnniperuxy dngnncanwnkarepriybethiybthnghmdethakb n 1 n 2 2 1 n n 1 2 8 n2 displaystyle n 1 n 2 2 1 n n 1 2 in theta n 2 twxyangthilakhntxn kareriyngladbkhxmulinraykardngni 33 2 12 44 7 14 29 dwykhntxnwithiaebbeluxk erimtnthuxwathuktwinraykaryngimeriyng khrngthi 1 hatwthimikhanxythisudinraykarswnthiyngimeriyngnnkhux 11 slbkbtwaerkkhxngkhxmulthiyngimeriyngnnkhux 2 64 25 12 22 11 displaystyle to 11 25 12 22 64 khrngthi 2 hatwthimikhanxythisudnnkhux 12 slbkbtwaerknnkhux 25 11 25 12 22 64 displaystyle to 11 12 25 22 64 khrngthi 3 hatwthimikhanxythisudnnkhux 22 slbkbtwaerknnkhux 25 11 12 25 22 64 displaystyle to 11 12 22 25 64 eriyngesrceriybrxykarnamaichngantwxyangrhsethiym begin selectionSort A khux aethwladbthicathukeriyng for i 0 to khnadkhxng A 1 ihtaaehnngkhxngkhanxysud khux i for j i 1 to khnadkhxng A 1 if A j lt A taaehnngkhxngkhanxysud then ihtaaehnngkhxngkhanxysud khux j end if end for slb A i kb A taaehnngkhxngkhanxysud end for endxangxingbthkhwamkarekhiynopraekrm hrux phasaopraekrmniyngepnokhrng khunsamarthchwywikiphiediyidodykarephimetimkhxmuldk