มันไม่ง่ายเลยที่จะเข้าใจ Sorting Algorithm ep.1

Ming Ruengjaruwatana
2 min readMar 27, 2018

--

มันไม่ง่ายเลยที่จะเข้าใจ Sorting

เชื่อว่าคนที่กำลังศึกษาเรื่อง programming ไม่ว่าจะถิ่นแคว้นแดนใดก็คงจะหนีไม่พ้นเรื่อง sorting algorithm แน่ ๆ ซึ่งมักเป็นเรื่องที่น่าปวดหัวกับผู้ฝึกหัดเขียนโปแกรมหลาย ๆ คนว่าเจ้าตัว sorting algorithm คืออะไร ทำอะไรได้?

รู้จักกับครอบครัว Sorting Algorithms ก่อน

Sorting ถ้าแปลอย่างตรงตัวก็คือ การจัดลำดับหรือการเรียงลำดับ

Algorithm ก็แปลว่า กระบวนการหรือวิธีการทำบางสิ่งบางอย่าง

Sorting algorithm จึงแปลว่า วิธีหรือกระบวนการจัดลำดับหรือเรียงลำดับสิ่งของต่าง ๆ ให้มันมีลำดับตามที่เราต้องการโดยในทางโปรแกรมมิ่ง เรามักจะใช้การ sorting นี้จัดการกับชุดข้อมูลหรือเอกสาร(ที่ชอบเรียกกันติดปากว่า files)ต่าง ๆ ในคอมพิวเตอร์ของเรานั่นเอง

sorting

แล้วทำไมต้องมี Sorting algorithm ล่ะ?

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

การที่ข้อมูลของเรามีการเรียง(sorted data) จะมีข้อดีที่เราสามารถหาเจอ(search)ได้ง่ายขึ้น เหมือนกับเราเรียงลำดับหนังสือตามตัวอักษรจาก a-z เราก็คงเดาตำแหน่งมันง่ายขึ้น แทนที่ต้องสุ่มตำแหน่งหนังสือให้เปลืองเวลา

ข้อมูลที่ยังไม่ได้ถูกเรียง
ข้อมูลที่ถูกเรียงแล้ว

Sorting algorithm เรียนเพื่อ? เอาไปใช้ที่ไหนบ้าง?

Sorting algorithm เป็นหนึ่งในเรื่องที่ใช้เยอะมาก ๆ เลยในเรื่องของ programming เราสามารถพบเห็นมันได้ทั่วไปในโลกของคอมพิวเตอร์เลย (ไม่ต้องใช้แว่นขยายส่องยังเจอ) เช่น ถ้าเราลองคลิกขวาในหน้าจอ window ของเราเรายังเห็นเลยว่ายังมีตัวเลือกให้เรียงไฟล์ของเรา ไม่ว่าจะเป็นตามชื่อหรืออะไรก็แล้วแต่

ตัวเลือก sort by

ดังนั้น Sorting Algorithm ที่ใคร ๆ เค้าก็เขียนก็ควรจะเป็นเรื่องที่ควรเข้าใจการทำงานของมัน แต่ตามที่บอกไว้ข้างต้นว่าเรื่องนี้ช่างน่าปวดหัวเหลือเกิน เพราะไม่ได้มีแค่วิธีการเดียวในการทำการ sort (แอบสปอยไว้แล้วว่าครอบครัว Sorting algorithmsssss)

สมาชิกครอบครัวของ Sorting Algorithms

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

algorithm การจัดเรียงข้อมูลแบบเด่น ๆ ได้แก่

  1. Bubble sort (simple สุด)
  2. Insertion sort
  3. Merge sort
  4. Heap sort
  5. Quick sort
  6. Bogo sort (อันนี้เกรียนสุด ๆ )

และยังมีแบบอื่น ๆ อีกมากมาย(เยอะจริง ๆ )

ภาพการเรียงข้อมูล จาก http://www.101computing.net/bubble-sort-algorithm/

ซึ่งแต่ละอย่างมีวิธีการอย่างไร เราจะมาเจาะลึกกันในครั้งหน้า

--

--

Ming Ruengjaruwatana

Graduated with a bachelor of engineering from PSU. Now working as a web developer at Tailor Solutions.