fbpx
วิกิพีเดีย

การเรียงลำดับแบบเลือก

ในสาขาวิทยาการคอมพิวเตอร์ การเรียงลำดับแบบเลือก (อังกฤษ: selection sort) เป็นขั้นตอนวิธีการเรียงลำดับอย่างง่ายโดยใช้วิธีการเปรียบเทียบ ทำงานโดยการหาค่าเหมาะสมที่สุด (ค่ามากสุดหรือน้อยสุด) ที่อยู่ในรายการส่วนที่ยังไม่เรียงและนำค่าเหมาะที่สุดนั้นมาต่อท้ายของส่วนที่เรียงแล้ว ก็จะทำให้ส่วนที่เรียงแล้วมีขนาดใหญ่ขึ้นทีละหนึ่งในแต่ละรอบการทำงาน ทำเช่นนี้จนไม่มีส่วนที่ยังไม่เรียงก็เสร็จ แต่ด้วยประสิทธิภาพเมื่อเกิดกรณีทั่วไปที่ O(n2) ทำให้ไม่เหมาะที่จะใช้ในกรณีที่มีข้อมูลในรายการเป็นจำนวนมาก แต่ถ้าหากปรับปรุงการหาค่าเหมาะสมที่สุดในรายการด้วยแถวคอยลำดับความสำคัญที่ทำให้เกิดผลด้วยโครงสร้างข้อมูลแบบฮีปทวิภาคจะเรียกว่าการเรียงลำดับแบบฮีป ซึ่งมีประสิทธิภาพดีกว่าที่ O(n log n)

การเรียงลำดับแบบเลือก
แสดงขั้นตอนการทำงานของการเรียงลำดับแบบเลือก; สีเหลือง คือ เรียงเรียบร้อยแล้ว ; สีแดง คือ ค่าที่น้อยที่สุดในปัจจุบัน ; สีฟ้า คือ ค่าที่กำลังพิจารณา
ประเภทขั้นตอนวิธีการเรียงลำดับ
โครงสร้างข้อมูลรายการ
ประสิทธิภาพเมื่อเกิดกรณีแย่ที่สุด
ประสิทธิภาพเมื่อเกิดกรณีดีที่สุด
ประสิทธิภาพเมื่อเกิดกรณีทั่วไป
ปริมาณความต้องการพื้นที่เมื่อเกิดกรณีแย่ที่สุดใช้พื่นที่ เพิ่มเติม

การวิเคราะห์

ประสิทธิภาพ

การเรียงลำดับแบบเลือกไม่เพียงง่ายต่อการเข้าใจแล้ว ก็ง่ายต่อการวิเคราะห์ด้วยเพราะว่าข้อมูลที่อยู่ในรายการนั้นแทบไม่มีผลต่อการทำงานของการเรียงลำดับแบบเลือกเลย เริ่มด้วยส่วนของการเลือกค่าที่เหมาะสมที่สุด (มากสุดหรือน้อยสุด) จากข้อมูลส่วนที่ยังไม่เรียงนั้นหากในส่วนนี้มีข้อมูลอยู่ n ตัว ก็จะเปรียบเทียบอย่างน้อย n-1 ครั้ง เมื่อได้ค่าเหมาะสมที่สุดแล้วก็สลับกับตัวแรกของส่วนที่ยังไม่เรียง แล้วลดขนาดของส่วนที่ยังไม่เรียงลงหนึ่ง แล้วก็หาค่าเหมาะสมที่สุดใหม่อีกครั้ง และแน่นอนส่วนที่ยังไม่เรียงก็จะเหลือข้อมูล n-1 ตัว (ก็ต้องเปรียบเทียบ n-2 ครั้ง) ทำเช่นนั้นไปเรื่อยๆ ดังนั้นจำนวนการเปรียบเทียบทั้งหมดเท่ากับ  

ตัวอย่างทีละขั้นตอน

การเรียงลำดับข้อมูลในรายการดังนี้ 64 25 12 22 11 ด้วยขั้นตอนวิธีแบบเลือก เริ่มต้นถือว่าทุกตัวในรายการยังไม่เรียง
ครั้งที่ 1 หาตัวที่มีค่าน้อยที่สุดในรายการส่วนที่ยังไม่เรียงนั่นคือ 11 สลับกับตัวแรกของข้อมูลที่ยังไม่เรียงนั่นคือ 64
(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 

อ้างอิง

การเร, ยงลำด, บแบบเล, อก, ในสาขาว, ทยาการคอมพ, วเตอร, งกฤษ, selection, sort, เป, นข, นตอนว, การเร, ยงลำด, บอย, างง, ายโดยใช, การเปร, ยบเท, ยบ, ทำงานโดยการหาค, าเหมาะสมท, ามากส, ดหร, อน, อยส, อย, ในรายการส, วนท, งไม, เร, ยงและนำค, าเหมาะท, ดน, นมาต, อท, ายของส,. insakhawithyakarkhxmphiwetxr kareriyngladbaebbeluxk xngkvs selection sort epnkhntxnwithikareriyngladbxyangngayodyichwithikarepriybethiyb thanganodykarhakhaehmaasmthisud khamaksudhruxnxysud thixyuinraykarswnthiyngimeriyngaelanakhaehmaathisudnnmatxthaykhxngswnthieriyngaelw kcathaihswnthieriyngaelwmikhnadihykhunthilahnunginaetlarxbkarthangan thaechnnicnimmiswnthiyngimeriyngkesrc aetdwyprasiththiphaphemuxekidkrnithwipthi O n2 thaihimehmaathicaichinkrnithimikhxmulinraykarepncanwnmak aetthahakprbprungkarhakhaehmaasmthisudinraykardwyaethwkhxyladbkhwamsakhythithaihekidphldwyokhrngsrangkhxmulaebbhipthwiphakhcaeriykwakareriyngladbaebbhip sungmiprasiththiphaphdikwathi O n log n kareriyngladbaebbeluxkaesdngkhntxnkarthangankhxngkareriyngladbaebbeluxk siehluxng khux eriyngeriybrxyaelw siaedng khux khathinxythisudinpccubn sifa khux khathikalngphicarnapraephthkhntxnwithikareriyngladbokhrngsrangkhxmulraykarprasiththiphaphemuxekidkrniaeythisudO n 2 displaystyle O n 2 prasiththiphaphemuxekidkrnidithisudO n 2 displaystyle O n 2 prasiththiphaphemuxekidkrnithwipO n 2 displaystyle O n 2 primankhwamtxngkarphunthiemuxekidkrniaeythisudichphunthi O 1 displaystyle O 1 ephimetimdkhk enuxha 1 karwiekhraah 1 1 prasiththiphaph 1 2 twxyangthilakhntxn 2 karnamaichngan 2 1 twxyangrhsethiym 3 xangxingkarwiekhraah aekikhprasiththiphaph aekikh 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 n 2 displaystyle n 1 n 2 2 1 n n 1 2 in theta n 2 twxyangthilakhntxn aekikh kareriyngladbkhxmulinraykardngni 64 25 12 22 11 dwykhntxnwithiaebbeluxk erimtnthuxwathuktwinraykaryngimeriyngkhrngthi 1 hatwthimikhanxythisudinraykarswnthiyngimeriyngnnkhux 11 slbkbtwaerkkhxngkhxmulthiyngimeriyngnnkhux 64 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 eriyngesrceriybrxykarnamaichngan aekikhtwxyangrhsethiym aekikh 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 endxangxing aekikh bthkhwamekiywkbkarekhiynopraekrm hrux phasaopraekrmniyngepnokhrng khunsamarthchwywikiphiediyidodyephimkhxmulekhathungcak https th wikipedia org w index php title kareriyngladbaebbeluxk amp oldid 8670380, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม