March 26, 2012

Python: เรียงลำดับข้อมูล

การเรียงลำดับข้อมูลใน Python นั้น มีเครื่องมือที่ช่วยอำนวยความสะดวกคือ sorted และ list.sort

ความแตกต่างของสองตัวนี้ คือ sorted จะมองแบบ functional ได้ของใหม่ออกมา (โดยที่ของเก่าไม่เปลี่ยนค่า) ส่วน list.sort จะมองแบบ OOP คือเข้าไปเปลี่ยนแปลงการเรียงลำดับในตัว list object

หรือถ้าจะเรียงจากมากไปน้อย

สิ่งที่ต้องระวังคือ สมาชิกแต่ละตัวใน list ต้องอยู่ในรูปแบบของข้อมูลที่สามารถนำมาเปรียบเทียบมากกว่า-น้อยกว่าได้ (อย่าง [1, 2, 'a'] หมดสิทธิ์)



ตัวเลือกอีกตัวคือ key ที่ใช้ในการเปรียบเทียบ ซึ่งทำได้โดยส่งผ่านฟังก์ชันที่รับค่า 1 ตัวแปรเข้าไปเป็น key



ข้อมูลทางเทคนิคคือการเรียงลำดับจะใช้อัลกอริทึม Timsort ซึ่งมีประสิทธิภาพที่ O(n log n) และเป็นแบบ stable (สมาชิกหลังการจัดเรียงแล้วยังคงลำดับเดิมอยู่) ครับ

1 comment:

  1. มันไม่ใช่แค่ OOP เท่านั้นนะ

    ถ้าไม่ต้องการรักษาลำดับดั้งเดิม ควรใช้ .sort() เสมอ เพราะมันประหยัด memory ด้วย

    ReplyDelete