fbpx
วิกิพีเดีย

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

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

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

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

 
ภาพตัวอย่างแสดงการทำงานของการเรียงลำดับแบบฟองเพื่อเรียงลำดับจากน้อยไปมาก เร่มต้นทำงานจากทางซ้ายและเปรียบเทียบทีละคู่และสลับกันถ้าหากพบว่าตัวทางด้านซ้ายมีค่ามากกว่าตัวทางด้านขวา

ประสิทธิภาพ

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

การปรับปรุงประสิทธิภาพของการเรียงลำดับแบบฟองนั้นวิธีการหนึ่งก็คือการทำให้ค่าน้อยที่อยู่หลังๆ นั้นลงมาด้านหน้าได้เร็วขึ้น นั่นคือหลักการของ Cocktail Sort ซึ่งมีขั้นตอนวิธีคล้ายการเรียงลำดับแบบฟองมากเพียงแต่ทำงานทั้งขาไปและขากลับ ขาไปนั้นทำงานเหมือนการเรียงลำดับแบบฟองทุกประการ ส่วนขากลับก็เพียงกลับด้านของการเรียงลำดับแบบฟองนั่นเอง แต่การปรับปรุงดังนี้ก็ไม่ได้ทำให้ประสิทธิภาพในกรณีแย่ที่สุดดีกว่า O(n2) แต่อย่างใด

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

การเรียงลำดับเลข 5 1 4 2 8 ในลิสต์ จากน้อยไปมาก ในแต่ละขั้นตอนตัวหนาหมายถึงตัวที่กำลังถูกเปรียบเทียบ
รอบที่ 1
( 5 1 4 2 8 )   ( 1 5 4 2 8 ), เปรียบเทียบตัวปัจจุบันกับตัวถัดไป สลับเนื่องจาก 5 > 1
( 1 5 4 2 8 )   ( 1 4 5 2 8 ), สลับเนื่องจาก 5 > 4
( 1 4 5 2 8 )   ( 1 4 2 5 8 ), สลับเนื่องจาก 5 > 2
( 1 4 2 5 8 )   ( 1 4 2 5 8 ), ไม่สลับเนื่องจาก 5 ไม่มากกว่า 8
รอบที่ 2
( 1 4 2 5 8 )   ( 1 4 2 5 8 )
( 1 4 2 5 8 )   ( 1 2 4 5 8 ), สลับเนื่องจาก 4 > 2
( 1 2 4 5 8 )   ( 1 2 4 5 8 )
( 1 2 4 5 8 )   ( 1 2 4 5 8 )
ถึงแม้ว่าข้อมูลในลิสต์จะเรียงหมดแล้ว แต่ว่าก็ต้องตรวจสอบอีกครั้งหนึ่ง
รอบที่ 3
( 1 2 4 5 8 )   ( 1 2 4 5 8 )
( 1 2 4 5 8 )   ( 1 2 4 5 8 )
( 1 2 4 5 8 )   ( 1 2 4 5 8 )
( 1 2 4 5 8 )   ( 1 2 4 5 8 )
ในรอบนี้ไม่มีการสลับ แสดงว่าลำดับเลขเรียงจากน้อยไปมากแล้ว

การนำมาใช้งาน

ตัวอย่างรหัสเทียม

begin bubbleSort ( A คือ แถวลำดับที่จะถูกเรียง ) do ทำเครื่องหมายว่ายังไม่มีการสลับ for i = 1 to ขนาดของ(A)-1 if A[i-1] > A[i] then สลับ A[i-1] กับ A[i] ทำเครื่องหมายว่ามีการสลับแล้ว end if end for until ไม่มีการสลับแล้ว end 

การปรับปรุงประสิทธิภาพ

ในการเรียงลำดับจากน้อยไปมากเสร็จหนึ่งรอบจะทำให้ค่าที่มากที่สุดลำดับที่ i ไปอยู่ในตำแหน่งที่ n-1 ดังนั้นจึงสามารถมองข้ามตำแหน่งที่ n-1 ในการทำงานรอบต่อไปได้

begin bubbleSort ( A คือ แถวลำดับที่จะถูกเรียง ) n = ขนาดของ(A) do ทำเครื่องหมายว่ายังไม่มีการสลับ for i = 1 to n-1 if A[i-1] > A[i] then สลับ A[i-1] กับ A[i] ทำเครื่องหมายว่ามีการสลับแล้ว end if end for n = n - 1 until ไม่มีการสลับแล้ว end 

ในการทำงานจริง

จะกล่าวได้ว่าการเรียงลำดับแบบฟองนั้นเป็นหนึ่งในขั้นตอนวิธีการเรียงลำดับที่ง่ายที่สุดเท่าที่เรารู้จัก ด้วย O(n2) ทำให้ประสิทธิภาพของมันลดลงอย่างมากแม้เราเพิ่มจำนวนสมาชิกที่จะเรียงเพียงเล็กน้อย แม้จะเปรียบเทียบขั้นตอนวิธีการเรียงลำดับที่มี O(n2) ด้วยกันนั้นการเรียงลำดับแบบแทรกก็นับว่ามีประสิทธิภาพดีกว่าในกรณีทั่วๆ ไป แต่ด้วยความง่ายของขั้นตอนวิธีและความง่ายในการเขียนทำให้เราพบเห็นการเรียงลำดับแบบฟองได้อยู่ทั่วไป และมักจะได้เป็นขั้นตอนวิธีการเรียงลำดับแรกๆ ที่ผู้เริ่มเขียนโปรแกรมได้ศึกษานั่นเอง

การเรียงรูปแบบอื่นที่แตกต่างออกไป

  • Cocktail Sort

การเรียกชื่อที่ผิด

อ้างอิง

การเร, ยงลำด, บแบบฟอง, บทความน, ไม, การอ, างอ, งจากแหล, งท, มาใดกร, ณาช, วยปร, บปร, งบทความน, โดยเพ, มการอ, างอ, งแหล, งท, มาท, าเช, อถ, เน, อความท, ไม, แหล, งท, มาอาจถ, กค, ดค, านหร, อลบออก, เร, ยนร, าจะนำสารแม, แบบน, ออกได, อย, างไรและเม, อไร, ในสาขาว, ทยากา. bthkhwamniimmikarxangxingcakaehlngthimaidkrunachwyprbprungbthkhwamni odyephimkarxangxingaehlngthimathinaechuxthux enuxkhwamthiimmiaehlngthimaxacthukkhdkhanhruxlbxxk eriynruwacanasaraemaebbnixxkidxyangiraelaemuxir insakhawithyakarkhxmphiwetxr kareriyngladbaebbfxng xngkvs bubble sort epnkhntxnwithikareriyngladbthieriybngaymak daeninkarbnokhrngsrangkhxmulpraephthraykar thanganodyepriybethiybsmachikthixyutidkn emuxphbtaaehnngthiphid nnkhuxtwhnamakkwatwhlnginkrnikareriyngcaknxyipmak kcathakarslbkhxmulkn aelacadaeninkarsaaebbniiperuxycnkwacaimmitaaehnngthiphidxiksungbngbxkwaraykarnneriyngaelw chuxkhxngkhntxnwithinimimacaksmachikthinxythisudcakhxythukslbkhunmacnxyuhnasudkhxngraykar epriybidkbfxngthikhxyphudkhunmathungphiwna enuxngcakkhntxnwithiniichephiyngkarepriybethiybcungepnkareriyngaebbepriybethiyb nxkcakniyngepnkareriyngaebbesthiyrxikdwy thungaemwakareriyngladbaebbfxngcaepnkhntxnwithithieriybngaymak aetimehmaainkareriyngkhxmulcanwnmaksungmiwithikareriyngkhxmulthimiprasiththiphaphmakkwakareriyngladbaebbfxngphaphcalxngkarthangankhxngkareriyngladbaebbfxngpraephthkhntxnwithikareriyngladbokhrngsrangkhxmulraykarprasiththiphaphemuxekidkrniaeythisudO n 2 displaystyle O n 2 prasiththiphaphemuxekidkrnidithisudO n displaystyle O n 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 2 2 karprbprungprasiththiphaph 3 inkarthangancring 4 kareriyngrupaebbxunthiaetktangxxkip 5 kareriykchuxthiphid 6 xangxingkarwiekhraah aekikh phaphtwxyangaesdngkarthangankhxngkareriyngladbaebbfxngephuxeriyngladbcaknxyipmak ermtnthangancakthangsayaelaepriybethiybthilakhuaelaslbknthahakphbwatwthangdansaymikhamakkwatwthangdankhwa prasiththiphaph aekikh prasiththiphaphkhxngkareriyngladbaebbfxngkhunxyukbtaaehnngkhxngkhxmultang thixyuinraykar hakmikhamakxyutwaerk kareriyngladbaebbfxngcamiprasiththiphaphdi ephraawakarthanganephiyngrxbediywksamarththaihkhamakipxyuintaaehnngthiiklekhiyngkbtaaehnngcringid echnmikhamakthisudxyuintaaehnngaerk karthanganrxbediywkephiyngphxthicalakkhannipxyutaaehnngsudthayid aetklbknhakmikhanxyxyuhlng karthanganhnungrxbcasamartheluxnkhannmadanhnaidephiyngelknxy echnhakkhannepnkhanxythisudkarthanganhnungrxbcaeluxnkhannmadanhnaidephiynghnungtaaehnngethannkarprbprungprasiththiphaphkhxngkareriyngladbaebbfxngnnwithikarhnungkkhuxkarthaihkhanxythixyuhlng nnlngmadanhnaiderwkhun nnkhuxhlkkarkhxng Cocktail Sort sungmikhntxnwithikhlaykareriyngladbaebbfxngmakephiyngaetthanganthngkhaipaelakhaklb khaipnnthanganehmuxnkareriyngladbaebbfxngthukprakar swnkhaklbkephiyngklbdankhxngkareriyngladbaebbfxngnnexng aetkarprbprungdngnikimidthaihprasiththiphaphinkrniaeythisuddikwa O n2 aetxyangid twxyangthilakhntxn aekikh kareriyngladbelkh 5 1 4 2 8 inlist caknxyipmak inaetlakhntxntwhnahmaythungtwthikalngthukepriybethiybrxbthi 1 5 1 4 2 8 displaystyle to 1 5 4 2 8 epriybethiybtwpccubnkbtwthdip slbenuxngcak 5 gt 1 1 5 4 2 8 displaystyle to 1 4 5 2 8 slbenuxngcak 5 gt 4 1 4 5 2 8 displaystyle to 1 4 2 5 8 slbenuxngcak 5 gt 2 1 4 2 5 8 displaystyle to 1 4 2 5 8 imslbenuxngcak 5 immakkwa 8rxbthi 2 1 4 2 5 8 displaystyle to 1 4 2 5 8 1 4 2 5 8 displaystyle to 1 2 4 5 8 slbenuxngcak 4 gt 2 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 thungaemwakhxmulinlistcaeriynghmdaelw aetwaktxngtrwcsxbxikkhrnghnungrxbthi 3 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 1 2 4 5 8 displaystyle to 1 2 4 5 8 inrxbniimmikarslb aesdngwaladbelkheriyngcaknxyipmakaelwkarnamaichngan aekikhtwxyangrhsethiym aekikh begin bubbleSort A khux aethwladbthicathukeriyng do thaekhruxnghmaywayngimmikarslb for i 1 to khnadkhxng A 1 if A i 1 gt A i then slb A i 1 kb A i thaekhruxnghmaywamikarslbaelw end if end for until immikarslbaelw end karprbprungprasiththiphaph aekikh inkareriyngladbcaknxyipmakesrchnungrxbcathaihkhathimakthisudladbthi i ipxyuintaaehnngthi n 1 dngnncungsamarthmxngkhamtaaehnngthi n 1 inkarthanganrxbtxipid begin bubbleSort A khux aethwladbthicathukeriyng n khnadkhxng A do thaekhruxnghmaywayngimmikarslb for i 1 to n 1 if A i 1 gt A i then slb A i 1 kb A i thaekhruxnghmaywamikarslbaelw end if end for n n 1 until immikarslbaelw endinkarthangancring aekikhswnnirxephimetimkhxmul khunsamarthchwyephimkhxmulswnniidcaklawidwakareriyngladbaebbfxngnnepnhnunginkhntxnwithikareriyngladbthingaythisudethathieraruck dwy O n2 thaihprasiththiphaphkhxngmnldlngxyangmakaemeraephimcanwnsmachikthicaeriyngephiyngelknxy aemcaepriybethiybkhntxnwithikareriyngladbthimi O n2 dwyknnnkareriyngladbaebbaethrkknbwamiprasiththiphaphdikwainkrnithw ip aetdwykhwamngaykhxngkhntxnwithiaelakhwamngayinkarekhiynthaiheraphbehnkareriyngladbaebbfxngidxyuthwip aelamkcaidepnkhntxnwithikareriyngladbaerk thiphuerimekhiynopraekrmidsuksannexngkareriyngrupaebbxunthiaetktangxxkip aekikhswnnirxephimetimkhxmul khunsamarthchwyephimkhxmulswnniidCocktail Sortkareriykchuxthiphid aekikhswnnirxephimetimkhxmul khunsamarthchwyephimkhxmulswnniidxangxing aekikhekhathungcak https th wikipedia org w index php title kareriyngladbaebbfxng amp oldid 8669947, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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