โปรแกรมเมอร์ที่เปลี่ยนจากพีซีและการพัฒนาเว็บเป็นการเข้ารหัสสำหรับอุปกรณ์มือถือหรือระบบฝังตัวพบว่าใช้เวลาในการเลือกและเข้ารหัสโครงสร้างข้อมูลและอัลกอริธึมมากขึ้น ด้วยหน่วยความจำที่น้อยลงและการจัดเก็บข้อมูลที่จำกัด จึงไม่มีพื้นที่สำหรับไลบรารีหรือเฟรมเวิร์กที่สร้างไว้ล่วงหน้า ดังนั้นสำหรับผู้ที่ต้องการเขียนกิจวัตรการเรียงลำดับของตนเอง ต่อไปนี้คือข้อควรพิจารณาบางประการในการเลือกการเรียงลำดับแบบฟองต่ำ
พื้นหลัง
การเรียงลำดับฟองเป็นอัลกอริธึมอย่างง่ายที่เรียงลำดับรายการในหน่วยความจำ จากอาร์เรย์ โค้ดจะเปรียบเทียบแต่ละคู่ของไอเท็มที่อยู่ติดกันซ้ำแล้วซ้ำเล่า และสลับไปมาหากไม่อยู่ในลำดับ กระบวนการนี้จะทำซ้ำจนกว่าจะไม่มีการสลับเกิดขึ้นอีก หากสามารถดูอาร์เรย์ได้ในขณะที่กำลังจัดเรียง ค่าต่ำจะ "ฟอง" ไปที่ด้านบนในขณะที่ค่าขนาดใหญ่จะจมลงสู่ด้านล่าง นี่คือรหัสที่เกี่ยวข้องใน Visual Basic 2010:
วีดีโอประจำวันนี้
ในขณะที่ swap = True swap = False สำหรับ i = 0 ถึง tbl.length - 2 ถ้า tbl (i) > tbl (i + 1) จากนั้น tmp = tbl (i) tbl (i) = tbl (i + 1) tbl (i + 1) = tmp swap = True End ถ้า Next End ในขณะที่
เมื่อใดควรเลือก Bubble Sort
อัลกอริทึมนี้มีข้อดีหลายประการ เขียนง่าย เข้าใจง่าย และใช้โค้ดเพียงไม่กี่บรรทัด ข้อมูลถูกจัดเรียงในตำแหน่งเพื่อให้มีหน่วยความจำโอเวอร์เฮดน้อย และเมื่อจัดเรียงแล้ว ข้อมูลจะอยู่ในหน่วยความจำพร้อมสำหรับการประมวลผล ข้อเสียที่สำคัญคือระยะเวลาที่ใช้ในการจัดเรียง เวลาเฉลี่ยจะเพิ่มขึ้นเกือบเท่าทวีคูณเมื่อจำนวนขององค์ประกอบตารางเพิ่มขึ้น จำนวนรายการสิบเท่าใช้เวลาในการจัดเรียงเกือบหนึ่งร้อยเท่า
การเรียงลำดับอาร์เรย์อื่นๆ
อัลกอริธึมการเรียงลำดับแตกต่างกันไปตามความซับซ้อน ความเร็ว และค่าใช้จ่าย การเรียงลำดับฟองนั้นซับซ้อนน้อยที่สุด แต่ก็เป็นหนึ่งในการเรียงลำดับที่ช้าที่สุดด้วย การเรียงลำดับตามอาร์เรย์อื่นๆ เช่น การเรียงลำดับการแทรกและการเรียงลำดับการแลกเปลี่ยนนั้นเร็วกว่าเล็กน้อย แต่ใช้โค้ดมากกว่า (ดูข้อมูลอ้างอิงด้านล่าง) ข้อได้เปรียบหลักของการเรียงลำดับแบบอาร์เรย์คือใช้โค้ดน้อยที่สุดและใช้หน่วยความจำในการทำงานน้อยที่สุด พิจารณาการเรียงลำดับเหล่านี้สำหรับอาร์เรย์แบบง่ายที่มีรายการน้อยกว่าสองสามร้อยรายการ
อัลกอริทึมการเรียงลำดับที่ซับซ้อน
ชุดข้อมูลขนาดใหญ่ต้องการรหัสที่ซับซ้อนและหน่วยความจำมากขึ้น การเรียงลำดับอย่างรวดเร็วและการเรียงลำดับฮีปจะแยกและคัดลอกชุดข้อมูลเพื่อปรับจำนวนการเปรียบเทียบให้เหมาะสม การเรียงลำดับอย่างรวดเร็วจะแบ่งรายการอย่างต่อเนื่อง จากนั้นจึงประกอบกลับตามลำดับการจัดเรียง การเรียงลำดับแบบฮีปจะคัดลอกข้อมูลลงในโครงสร้างทรี จากนั้นจึงข้ามต้นไม้เพื่อคัดลอกข้อมูลกลับเข้าสู่ลำดับ ทั้งสองอย่างรวดเร็วและมีประสิทธิภาพ แต่ใช้โค้ดมากกว่าและพื้นที่เก็บข้อมูลที่ใช้งานได้มากขึ้น เลือกอัลกอริทึมเหล่านี้สำหรับชุดข้อมูลขนาดใหญ่