ประโยชน์อีกอย่างหนึ่งของ Array คือ เราสามารถเขียนโปรแกรมเพื่อเรียงลำดับข้อมูลจากมากไปหาน้อยหรือจากน้อยไปหามากได้ เรียกอีกอย่างว่าการ Sorting
การ Sorting นั้นมีหลากหลายวิธี ส่วนวิธีที่นำมาแสดงเป็นตัวอย่างในบทนี้จะใช้วิธีที่เรียกว่า "Selection Sort" เพียงวิธีเดียวซึ่งเป็นวิธีการเรียงลำดับข้อมูลที่ง่ายที่สุดวิธีหนึ่งในบรรดาทั้งหมด สำหรับท่านที่สนใจการเรียงลำดับข้อมูลวิธีอื่นๆ ก็สามารถค้นหาใน google ด้วยคำว่า "Sorting Algorithm"
Selection Sort
วิธีการนี้ไม่สลับซับซ้อน การเรียงลำดับจากน้อยไปหามากมีขั้นตอนการทำงานเริ่มจากการเข้าไปอ่านค่าตัวเลขทั้งหมดเพื่อหาตัวเลขที่มีค่าน้อยสุดมาวางในตำแหน่งที่หนึ่ง แล้วก็เข้าไปหาค่าน้อยสุดจากชุดข้อมูลที่เหลือมาวางในตำแหน่งที่สอง ทำแบบนี้ไปเรื่อยๆ จบได้ชุดข้อมูลที่เรียงลำดับแล้วทุกหลัก
จะขออธิบายขั้นตอนการทำงานไปพร้อมกับตัวอย่างเพื่อให้เห็นภาพ
ตัวอย่าง ต้องการเรียงลำดับข้อมูลจาก น้อยไปหามาก จากตัวเลขชุดนี้ 2, 5, 1, 4, 3
กำหนดให้สีสัญลักษณ์
แทนตำแหน่งที่ต้องการนำตัวเลขที่เรียงลำดับมาวาง
แทนตัวเลขที่มีค่าน้อยที่สุดที่พบ
วิธีการ
ตัวเลขเริ่มต้นคือ 2 5 1 4 3
รอบที่ 1 ให้เอาตัวเลขตำแหน่งที่ 1 ซ้ายสุดเป็นหลัก(ในตัวอย่างคือ 2)นำไปเทียบกับตัวเลขทางขวามือที่เหลืออีก 4 ตัวที่เหลือเพื่อหาตัวเลขที่มีค่าน้อยสุดคือตำแหน่งที่ 3(เลข 1) ทำการสลับค่าตำแหน่งที่ 1 กับตำแหน่งที่ 3
ได้ตัวเลขชุดใหม่คือ 1 5 2 4 3
รอบที่ 2 เอาตัวเลขถัดมาคือตำแหน่งที่ 2 เป็นหลัก(เลข 5) นำไปเปรียบเทียบหาค่าน้อยสุดกับสามตัวทางขวาที่เหลือ ได้ตำแหน่งที่ 3(เลข 2) ทำการสลับค่าตำแหน่งที่ 2 กับตำแหน่งที่ 3
ได้ตัวเลขชุดใหม่คือ 1 2 5 4 3
รอบที่ 3 เอาตัวเลขตำแหน่งที่ 3 เป็นหลัก(เลข 5) นำไปเปรียบเทียบหาค่าน้อยสุดกับสองตัวที่เหลือ ได้ตำแหน่งที่ 5(เลข 3) ทำการสลับค่าตำแหน่งที่ 3 กับตำแหน่งที่ 5
ได้ตัวเลขชุดใหม่คือ 1 2 3 4 5
รอบที่ 4 เอาตัวเลขตำแหน่งที่ 4 เป็นหลัก(เลข 4) นำไปเปรียบเทียบกับค่าที่เหลืออีกหนึ่งตัว ซึ่งค่าที่เหลือไม่มีค่าน้อยกว่าตัวเลขตำแหน่งที่ 4 ก็ไม่ต้องมีการสลับตำแหน่ง
ผลลัพธ์ที่ได้จากการเรียงลำดับใหม่คือ 1 2 3 4 5
เขียนใหม่เพื่อให้ดูต่อเนื่องดังนี้
2 5 1 4 3 // เริ่มต้น
1 5 2 4 3 // หลังจากผ่านรอบที่ 1
1 2 5 4 3 // หลังจากผ่านรอบที่ 2
1 2 3 4 5 // หลังจากผ่านรอบที่ 3
1 2 3 4 5 // หลังจากผ่านรอบที่ 4
โปรแกรม Selection Sort เพื่อเรียงลำดับจาก น้อยไปหามาก สำหรับเครื่องคิดเลข Casio Fx-5800P
*****************************************
If Z[K]<Z[M]↵
If Z[K]>Z[M]↵
ก่อนจะอธิบายการทำงานของโปรแกรมขออธิบายเรื่องการสลับค่าตัวแปรก่อน
ให้ X=A // A=25, B=42, X=25
เท่านี้ก็สามารถสลับค่าตัวแปร A กับ B ได้แล้ว ส่วน X เป็นแค่ตัวแปรพักข้อมูล
สองลูปนี้ทำงานสอดคล้องกันโดยรอบ J=1, K จะเข้าถึงข้อมูลตำแหน่งที่ 2 ถึง 5 เพื่อเปรียบเทียบหาค่าน้อยที่สุดรอบ J=2, K จะเข้าถึงข้อมูลตำแหน่งที่ 3 ถึง 5 เพื่อเปรียบเทียบหาค่าน้อยที่สุดรอบ J=3, K จะเข้าถึงข้อมูลตำแหน่งที่ 4 ถึง 5 เพื่อเปรียบเทียบหาค่าน้อยที่สุดรอบ J=4, K จะเข้าถึงข้อมูลตำแหน่งที่ 5 เพื่อเปรียบเทียบหาค่าน้อยที่สุดหลังจากครบสี่รอบนี้ชุดข้อมูลก็จะถูกเรียงลำดับโดยสมบูรณ์
ตัวอย่างทดสอบโปรแกรม
ต้องการเรียงลำดับข้อมูลจากตัวเลขชุด 10 จำนวนดังนี้ 7, 19, 51, 40, 23, 2, 69, 33, 105, 19
ป้อนข้อมูล
NUMBER = 10
Z[1] = 7
Z[2] = 19
Z[3] = 51
Z[4] = 40
Z[5] = 23
Z[6] = 2
Z[7] = 69
Z[8] = 33
Z[9] = 105
Z[10] = 19
ไปคุ้ย forum ต่างชาติมา เหมือนจะมันก็มีวิธีประกาศ array หลายๆ ตัวอยู่ แต่ต้องเล่นท่าหน่อย
ตอบลบI*T+A → DimZ
โดยที่ I เป็น Index, T เป็นจำนวน Array ที่จะประกาศ, A เป็นArray ID
เพราะงั้นตอน declare เราก็ใส่ index สุดท้ายใน I, ส่วน T กับ A ก็ใส่จำนวน Array ไป
ตอนเรียกใช้ก็แบบเดียวกัน
Z[I*T+A]◢
I: Array Index
T: Number of array
A: Array ID
ref:https://www.reddit.com/r/calculators/comments/d6s4b3/comment/f0verjm/?utm_source=share&utm_medium=web2x&context=3
เอาจริงกระทู้ก็เก่าแล้ว แต่ขอถือวิสาสะขุดหน่อย
ลบเนื่องจากนี้ก็เพิ่งได้ Fx5800P มาใช้แล้วหาวิธีประกาศ araay หลายตัวไม่ได้. ถึงตอนนี้จะหาวิธีได้แล้ว แต่คนอื่นก็น่าจะมีปัญหาเหมือนกัน
อ่าว เขียนผิดกระทู้ นี้มัน Array sorting นิหว่า😝
ลบคิดซะว่าผมค้อมเม้นในกระทู้ Array ละกัน
ขอบคุณสำหรับคำแนะนำและลิงค์ที่แนบมาครับ ความจริงในบทความเรื่อง Array ผมก็ได้เขียนเรื่องการใช้ Array เก็บตัวแปรหลายตัวพร้อมตัวอย่างการใช้เก็บตัวแปรค่า มุม, ระยะ, Azimuth, N, E ไว้แล้ว ไม่แน่ใจว่าคุณได้อ่านจบบทหรือยัง หรือบางทีผมอาจจะเขียนอธิบายไม่เข้าใจเอง
ลบผมอาจจะตอบช้าไปบ้างต้องขอโทษทีครับ ผมมีเวลาแค่ช่วงค่ำๆ