ทำไม 10 ถึงมาก่อน 2 และการเรียงลำดับแบบธรรมชาติแก้ปัญหานี้อย่างไร
การเรียงลำดับตัวอักษรแบบปกติจะเทียบอักขระตัวแรกของแต่ละรายการ จากนั้นตัวที่สอง และต่อไปเรื่อย ๆ อักขระตัวแรกของ "10" คือ 1 และ 1 มาก่อน 2 "10" จึงมาก่อน "2" ลำดับนี้ถูกต้องสำหรับข้อความ แต่ผิดสำหรับตัวเลข การเรียงลำดับแบบธรรมชาติ (natural sorting) จะอ่านตัวเลขที่ต่อกันเป็นจำนวนเต็มก้อนเดียว ดังนั้น 2 จึงมาก่อน 10 และการเติมเลข 0 นำหน้า เช่น 02 และ 10 ก็แก้ปัญหาเดียวกันได้ที่ชื่อไฟล์เอง
เรียงลำดับบรรทัดรายการเรียงผิดลำดับใช้ฟรีทำไมคอมพิวเตอร์ทำงานแบบนี้
การเรียงลำดับแบบปกติจะเทียบข้อความทีละตำแหน่งจากซ้ายไปขวา โดยใช้รหัสอักขระหรือลำดับการเรียงของภาษานั้น และหยุดเมื่อเจอความต่างตัวแรก วิธีนี้เหมาะกับคำ เช่น "apple" มาก่อน "banana" เพราะตัวอักษรแรกต่างกัน
แต่วิธีนี้ใช้กับตัวเลขไม่ได้ ลองดูชื่อไฟล์สามชื่อ คือ file-2, file-9 และ file-10 ในคู่สุดท้าย การเทียบจะไปถึงตำแหน่งที่ 6 ซึ่งเป็นอักขระ 1 และ 9 เลข 1 น้อยกว่า file-10 จึงมาก่อน ลำดับแบบปกติคือ file-10, file-2, file-9 ซึ่งถูกต้องสำหรับตัวอักษร แต่ผิดสำหรับคนที่ต้องการอ่านจำนวน
การเรียงลำดับแบบธรรมชาติ
การเรียงลำดับแบบธรรมชาติ หรือที่เรียกว่าการเรียงแบบตัวเลข (numeric) หรือแบบมนุษย์ (human sorting) จะแยกแต่ละข้อความเป็นกลุ่มตัวเลขและกลุ่มอักขระอื่น โดยเทียบกลุ่มตัวเลขตามค่าของจำนวน และเทียบส่วนที่เหลือเป็นข้อความ ดังนั้น 2 จึงมาก่อน 10 และ file-2 มาก่อน file-10 โปรแกรมจัดการไฟล์หลายตัวใช้การเรียงแบบนี้เป็นค่าเริ่มต้น จึงเป็นเหตุผลที่โฟลเดอร์รูปภาพที่มีเลขกำกับมักแสดงลำดับถูกต้องในโปรแกรมเหล่านั้น
เรียงลำดับรายการใน fixmint
- วางรายการลงในเครื่องมือเรียงลำดับ โดยแต่ละรายการอยู่คนละบรรทัด
- ในส่วนลำดับ (Order) ให้เลือกตัวเลข แทน A→Z
| A→Z แบบปกติ | ตัวเลข |
|---|---|
| item1, item10, item2 | item1, item2, item10 |
ลำดับแบบตัวเลขจะอ่านตัวเลขเป็นจำนวนเต็ม ลบบรรทัดที่ซ้ำกัน ก็มีลำดับแบบตัวเลขให้เลือกเช่นกัน โดยจะลบรายการซ้ำก่อนแล้วจึงเรียง ผลลัพธ์จึงไม่ซ้ำและเรียงตามลำดับตัวเลข
การเติมเลข 0 นำหน้า: อีกวิธีแก้
เมื่อคุณตั้งชื่อไฟล์เอง ให้ตัวเลขทุกตัวมีความยาวเท่ากัน เช่น 01, 02 ไปจนถึง 10 หรือ 001 ถึง 100 การเรียงแบบปกติจะให้ลำดับที่ถูกต้องทุกที่ รวมถึงในโปรแกรมที่ไม่มีการเรียงแบบธรรมชาติ การเติมเลขยังช่วยรักษาลำดับเมื่อรายการถูกส่งออกจากเครื่องของคุณ เพราะชื่อไฟล์บรรจุลำดับไว้ในตัวเองแล้ว วิธีนี้ได้ผลเพราะเมื่อความยาวเท่ากัน การเทียบทีละอักขระจะให้ผลตรงกับลำดับของตัวเลข ความยาวต้องพอสำหรับเลขที่มากที่สุด ระบบสามหลักรองรับได้ถึง 999 ดังนั้นไฟล์ชื่อ 1000 จะไปอยู่ระหว่าง 100 กับ 101 และทำให้ลำดับผิด เมื่อรายการยาวเกินความกว้างที่กำหนด ให้เติมเลขทุกตัวให้ได้ความยาวที่กว้างขึ้น
ใช้วิธีนี้กับไฟล์ใหม่ และเปลี่ยนชื่อไฟล์เดิมเป็นชุดโดยเพิ่มเลข 0 นำหน้า
จุดที่การเรียงแบบปกติมักปรากฏ
ชื่อที่มีเลขกำกับพบได้ทุกที่ เช่น รูปที่ส่งออกเป็น IMG_1 ถึง IMG_120 บทที่ชื่อ Chapter 1 ถึง Chapter 30 รายการเพลง เลขที่ใบแจ้งหนี้ และเวอร์ชันของซอฟต์แวร์ ทุกอย่างเหล่านี้อาจดูผิดหลังการเรียงแบบปกติ เพราะหลักแรกเป็นตัวกำหนดตำแหน่ง Chapter 10 จึงไปอยู่ติดกับ Chapter 1 และ Chapter 2 ไปอยู่ใกล้ท้ายรายการ
ป้ายกำกับที่มีตัวอักษรก็เป็นแบบเดียวกัน Part 2a, Part 2b และ Part 10 จะเรียงตามลำดับนั้นภายใต้การเรียงแบบธรรมชาติ เพราะเทียบตัวเลขก่อน และใช้ตัวอักษรเพื่อแยกเฉพาะรายการที่มีเลขเท่ากัน ส่วนการเรียงแบบปกติจะวาง Part 10 ไว้ก่อน Part 2a
วันที่ต้องระวัง ในการเรียงแบบธรรมชาติ วันที่ที่เขียนวันก่อนเช่น 4/11/2026 และ 12/01/2026 จะเทียบวันก่อน ทำให้ 4/11 มาก่อน 12/01 ทั้งที่ 12 มกราคม เกิดก่อนในปี วันที่ที่เขียนปีก่อน เช่น 2026-11-04 จะเรียงถูกต้องเป็นข้อความธรรมดา ดังนั้นให้ใช้รูปแบบนี้เมื่อรายการต้องเรียงตามวันที่
ตรวจผลลัพธ์หลังการเรียง
ตรวจจุดรอยต่อ ซึ่งเป็นจุดที่การเรียงแบบปกติผิดบ่อยที่สุด ได้แก่การเปลี่ยนจาก 9 ไป 10 และจาก 99 ไป 100 เมื่อเรียงแบบตัวเลข จุดเหล่านี้จะเรียงถูกต้อง หากรายการผสมระหว่างเลขที่เติม 0 กับเลขที่ไม่เติม ให้ดูจุดเหล่านี้ก่อน เพราะความไม่สม่ำเสมอจะปรากฏตรงนั้น
เลือกลำดับอย่างตั้งใจ
ใช้ A ถึง Z กับคำ ชื่อ และหัวข้อ ที่ตัวอักษรเป็นตัวกำหนดความหมาย ใช้ตัวเลขกับรายการที่ขึ้นต้นด้วยจำนวน หน้า บท หรือเวอร์ชัน ใช้ความยาวเมื่ออยากให้รายการสั้นที่สุดขึ้นก่อน สุ่มลำดับใช้สำหรับเลือกลำดับแบบสุ่ม และจะได้ผลต่างกันทุกครั้งที่กด ส่วนกฎเบื้องหลังการเรียงตัวอักษรแบบปกติ ดูได้ที่วิธีเรียงลำดับรายการตามตัวอักษร
กรณีพิเศษ
- บรรทัดที่ผสมกัน การเรียงแบบธรรมชาติจะเทียบทั้งบรรทัดจากซ้ายไปขวา ในรายการที่ขึ้นต้นด้วยชื่อ ชื่อจะกำหนดลำดับก่อน ดังนั้น "Bob 1" จะมาหลัง "Ada 10" แม้ 1 จะน้อยกว่า 10
- ความกว้างที่ไม่เท่ากัน เลขที่เติม 0 และไม่เติม 0 ในรายการเดียวกันอาจถูกเทียบว่าเท่ากันในการเรียงแบบธรรมชาติ ลำดับจึงขึ้นอยู่กับข้อมูลที่ป้อน ควรเลือกความกว้างเพียงแบบเดียวสำหรับแต่ละรายการ
- ทศนิยม การเรียงแบบธรรมชาติจะอ่าน 1.9 เป็น 1 แล้วตามด้วย 9 และอ่าน 1.10 เป็น 1 แล้วตามด้วย 10 ดังนั้น 1.9 จึงมาก่อน วิธีนี้เหมาะกับหมายเลขเวอร์ชัน ซึ่ง 1.10 เป็นรุ่นที่ใหม่กว่า แต่สำหรับค่าทศนิยม เช่น ราคา 1.10 น้อยกว่า 1.9 ดังนั้นลำดับแบบธรรมชาติจึงผิด ให้เติมทศนิยมให้มีจำนวนตำแหน่งเท่ากัน เช่น 1.10 และ 1.90
- ตัวพิมพ์ การเรียงตามค่าเริ่มต้นจะถือว่า Apple และ apple เป็นสิ่งเดียวกัน จึงจัดให้อยู่ด้วยกันตามลำดับที่วางลงไป การแยกตัวพิมพ์ใหญ่-เล็ก (Case-sensitive) จะเปลี่ยนสิ่งนี้
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


