การใช้ Arrays.sort ในการเรียงลำดับอาเรย์ (Array) จากน้อยไปมาก

       สวัสดีครับ วันนี้ผมจะมาพูดถึงเรื่องของอาเรย์ (array) นิดหน่อยครับ เกี่ยวกับการเรียงลำดับตัวแปรจากน้อยไปมาก ซึ่งจะสามารถทำให้จัดการข้อมูลในอาเรย์นั้นได้ง่าย. ไปดูข้างล่างกันเลย

ปล. บทความนี้จะเอาไปใช้กับจาวาในแอนดรอยด์ หรือจาวาในระบบอื่นก็ได้นะครับ

       ถ้าสมมติผมมีลำดับอาเรย์ (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 อะไรประมาณนั้นครับ



 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));

            }
        }
ซึ่งเราก็จะเขียนซอสโค้ดออกมาประมาณนี้ครับ

หน้าผลลัพธ์ก็จะออกมา

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


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การรับค่า ส่งค่าจากหน้าที่ 1 ไปหน้าที่ 2 บน Flutter (How to pass data between screens in Flutter?)

การจับเวลาบน Flutter ทำยังไง (How to count up timer flutter?)

วิธีการสลับข้อมูล MySQL ในคอลัมน์เดียวกัน