การใช้ Arrays.sort ในการเรียงลำดับอาเรย์ (Array) จากน้อยไปมาก
สวัสดีครับ วันนี้ผมจะมาพูดถึงเรื่องของอาเรย์ (array) นิดหน่อยครับ เกี่ยวกับการเรียงลำดับตัวแปรจากน้อยไปมาก ซึ่งจะสามารถทำให้จัดการข้อมูลในอาเรย์นั้นได้ง่าย. ไปดูข้างล่างกันเลย
ปล. บทความนี้จะเอาไปใช้กับจาวาในแอนดรอยด์ หรือจาวาในระบบอื่นก็ได้นะครับ
ถ้าสมมติผมมีลำดับอาเรย์ (Array) เป็นแบบนี้ int a[] = {1, 2, 3, 12, 15, 26, 22, 5, 5, 0}; ลำดับในอาเรย์ตัวนั้นๆ คือ a[] นั้นมันคงไม่สวยแน่นอน. ดังนั้นการจัดการอาเรย์โดยให้มันเรียงลำดับจากน้อยไปมากนั้นสามารถทำได้ง่ายมากด้วยการใช้คำสั่ง Array.sort() ซึ่งถ้าเป็นตัวอย่างนี้ก็ต้องใช้เป็น
ออกมาตามนี้ครับ ซึ่งใน Tag ตัวแปร "zz" นั้นก็แล้วแต่คนจะใส่เป็นอะไรนะครับ. แล้วแต่ใครถนัด. แต่ผมเองจะชอบใช้ "zz" เพราะว่ามันอยู่ใกล้มือดี 555 แล้วก็เป็นคีย์ที่ไม่มีคำสั่งมาซ้ำด้วย. ทำให้เวลา Filter นั้นสามารถทำได้ง่าย.
ปล. บทความนี้จะเอาไปใช้กับจาวาในแอนดรอยด์ หรือจาวาในระบบอื่นก็ได้นะครับ
ถ้าสมมติผมมีลำดับอาเรย์ (Array) เป็นแบบนี้ int a[] = {1, 2, 3, 12, 15, 26, 22, 5, 5, 0}; ลำดับในอาเรย์ตัวนั้นๆ คือ a[] นั้นมันคงไม่สวยแน่นอน. ดังนั้นการจัดการอาเรย์โดยให้มันเรียงลำดับจากน้อยไปมากนั้นสามารถทำได้ง่ายมากด้วยการใช้คำสั่ง Array.sort() ซึ่งถ้าเป็นตัวอย่างนี้ก็ต้องใช้เป็น
Array.sort(a);
ถ้าถามว่าผลลัพธ์จะเป็นยังไงนะหรอ. มันก็จะเรียงออกมาได้สวยงามมาก. ตามนี้ {0, 1, 2, 3, 5, 5, 12, 15, 22, 26} (ครบรึยังแอดมินไม่แน่ใจ เพราะไม่ได้เทส 555) ครับมันก็จะออกมาประมาณนั้น. เราสามารถเทสได้ง่ายๆ โดยการใช้ Log โดยจะต้องเทสลงในคำสั่ง For เพื่อให้มันวนค่าจนครบอาเรย์ทุกตัวได้
1 2 3 | for (int i = 0;i<a.length;i++) { Log.d("zz",String.valueOf(a[i])); } |
ออกมาตามนี้ครับ ซึ่งใน Tag ตัวแปร "zz" นั้นก็แล้วแต่คนจะใส่เป็นอะไรนะครับ. แล้วแต่ใครถนัด. แต่ผมเองจะชอบใช้ "zz" เพราะว่ามันอยู่ใกล้มือดี 555 แล้วก็เป็นคีย์ที่ไม่มีคำสั่งมาซ้ำด้วย. ทำให้เวลา Filter นั้นสามารถทำได้ง่าย.
ผลลัพธ์ที่ได้ออกมามันก็จะประมาณนี้ครับ. มันจะเรียงจากน้อยไปมาก. ทำให้เราสามารถที่จัดการข้อมูลเหล่านี้ได้อย่างสบาย
สมมติถ้าเราต้องการจะ setText จากแอนดรอยด์ให้ขึ้นไปดชว์ใน Emulator ก็ใช้เรียงตามตำแหน่งลงมาเป็น i , i-1 , i-2 ... ไปเรื่อยๆอ่ะครับ. แล้วแต่ว่าเราต้องการกี่ตำแหน่ง. เช่น 3 ตำแหน่งก็ใช้ไปถึง i -2 อะไรประมาณนั้นครับ
สมมติถ้าเราต้องการจะ setText จากแอนดรอยด์ให้ขึ้นไปดชว์ใน Emulator ก็ใช้เรียงตามตำแหน่งลงมาเป็น i , i-1 , i-2 ... ไปเรื่อยๆอ่ะครับ. แล้วแต่ว่าเราต้องการกี่ตำแหน่ง. เช่น 3 ตำแหน่งก็ใช้ไปถึง i -2 อะไรประมาณนั้นครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int result1 = a[9]; for (int i = 0; i < a.length; i++) { if (a[i] == result1) { txt_result1.setText(String.valueOf(i)); txt_result2.setText(String.valueOf(i-1)); txt_result3.setText(String.valueOf(i-2)); txt_result4.setText(String.valueOf(i-3)); txt_result5.setText(String.valueOf(i-4)); } } |
ซึ่งเราก็จะเขียนซอสโค้ดออกมาประมาณนี้ครับ
หน้าผลลัพธ์ก็จะออกมา |
ประมาณนี้ครับสำหรับบทความนี้ง่ายๆ ไม่มีอะไรมาก แต่มันจะมีประโยชน์ก็ต่อเมื่อเราได้ไปเจอกับโจทย์ที่เป็นแบบอาเรย์จริงๆ วนค่าตัวแปรนั้นไปเรื่อยๆ คำนวณหาค่าจากน้อยไปมาก มากไปน้อยอะไรก็แล้วแต่ มันจะได้ใช้ก็ตอนนั้นนั่นแหละครับบบบบบบบบ
ความคิดเห็น