arrow-up-wide-shortSorting Array

รชณิกา ใช้ฮวดเจริญ 630710670

Sorting Array คืออะไร

"Sort" คือการเรียงลำดับ "Sorting Array" คือ การจัดเรียงข้อมูลที่อยู่ในอาเรย์ตามลำดับ ไม่ว่าจะเป็นลำดับตามตัวอักษรหรือตัวเลข โดยสามารถเรียงข้อมูลได้ทั้งแบบจากน้อยไปหามากหรือจากมากไปหาน้อย


Sorting array in 'PHP'

ในภาษา PHP จะมีฟังก์ชันของ sortinเg array ทั้งหมด 6 ฟังก์ชัน ได้แก่

  • sort()

  • rsort()

  • asort()

  • ksort()

  • arsort()

  • krsort()


เปรียบเทียบทั้ง 6 ฟังก์ชันกับภาษา Java/C/Python

sort()

เป็นฟังก์ชันที่ใช้เรียง array ตามลำดับจากน้อยไปหามาก (ascending order) โดยจะจัดเรียงข้อมูลในอาเรย์ตามลำดับตัวเลขหรือตามลำดับตัวอักษร

ผลลัพธ์ที่ได้คือ ["Khao Manee", "Konja", "Siamese"]

จากตัวอย่างจะเห็นได้ชัดว่า PHP, Java และ Python มีฟังก์ชัน sort() ที่สามารถใช้ได้โดยตรง จะมีเพียงภาษา C เท่านั้นที่ไม่มีฟังก์ชันนี้ จำเป็นที่จะต้องสร้างฟังก์ชันที่เรียงจากน้อยไปมากเอง (จากตัวอย่างคือ compareStrings) และจะใช้qsort() ที่เป็นฟังก์ชันของภาษา C คู่ไปกับฟังก์ชันที่เราได้สร้างขึ้นเพื่องเรียงข้อมูลจากน้อยไปมาก

rsort()

มีการเรียงลำดับเหมือนกับ sort() แต่จะเรียงจากมากไปหาน้อย (descending order) ตามลำดับ ทั้งตัวเลขและตัวอักษร

ผลลัพธ์ที่ได้คือ ["Siamese", "Konja", "Khao Manee"]

จะเห็นได้ชัดว่าฟังก์ชัน rsort() จะมีเพียง PHP เท่านั้น

  • Java - จะใช้ sort() เหมือนเดิม แต่จะมีการเพิ่ม Collections.reverseOrder() เพื่อเปลี่ยนเป็นเรียงจากมากไปน้อย

  • C - จำเป็นต้องสร้างฟังก์ชันเพื่อเรียงข้อมูลจากมากไปน้อย จากตัวอย่างคือ compareStringsDescending และใช้ฟังก์ชัน qsort() ที่เป็นฟังก์ชันของภาษา C คู่ไปกับฟังก์ชันที่เราได้สร้างขึ้น

  • Python - จะใช้ sort() เหมือนเดิมเช่นกัน แต่จะมีการเพิ่ม reverse=True เพื่อเปลี่ยนเป็นเรียงจากมากไปน้อย

asort()

ใช้สำหรับจัดเรียงข้อมูลในอาเรย์โดยเรียงลำดับจากน้อยไปมาก (ascending order) ตาม'ค่า (Value)' และ 'คีย์ (Key)' ของอาเรย์จะไม่ถูกเปลี่ยนแปลง ซึ่งจะต่างกับ sort() และ rsort() ที่จัดเรียงตามค่า(Value) แต่ไม่สนใจคีย์(Key)

ผลลัพธ์ที่ได้คือ ["5 => Khao Manee", "10 => Konja", "7 => Siamese"] เรียงลำดับน้อยไปมากตามค่า(Value)

  • Java - ไม่มีฟังก์ชัน asort() โดยตรง จำเป็นต้องสร้าง HashMap เพื่อใช้ฟังก์ชัน comparingByKey() เพื่อเรียงลำดับจากน้อยไปมากตามคีย์(Key)

  • C - ไม่มีฟังก์ชัน asort() โดยตรงเช่นกัน ต้องทำเหมือนตัวอย่างโค้ด sort() ของภาษา C ที่สร้างฟังก์ชันขึ้นมาเอง และใช้ strcmp() ฟังก์ชันที่เราสร้างเพื่อให้เรียงลำดับตามคค่า(Value)

  • Python - ไม่มีฟังก์ชัน asort() โดยตรงเช่นกัน จะใช้เป็น dictionary และใช้ sorted กับlambda x: x[1] ซึ่งระบุให้เรียงตามค่าในตำแหน่งที่ 1 (Value) เพื่อเรียงลำดับตามค่า(Value)

ksort()

ทำงานเหมือนกับ rsort() แต่จะเป็นการเรียงตามคีย์(Key) จากน้อยไปมาก

ผลลัพธ์ที่ได้คือ ["5 => Khao Manee", "7 => Siamese", "10 => Konja"] เรียงลำดับน้อยไปมากตามคีย์(Key)

  • Java - ไม่มีฟังก์ชัน ksort() แต่จะเป็นการใช้แทน TreeMap เพื่อเรียงจากน้อยไปมากตามคีย์

  • C - ไม่มีฟังก์ชัน ksort()เช่นกัน ต้องทำเหมือนตัวอย่างโค้ด asort() ของภาษา C ที่สร้างฟังก์ชันขึ้นมาเองแต่เปลี่ยนจากเรียงตามค่า(Value) เป็นตามคีย์(Key) และใช้ strcmp() ฟังก์ชันที่เราสร้างเพื่อให้เรียงลำดับตามคีย์(Key)

  • Python - ไม่มีฟังก์ชัน asort() โดยตรงเช่นกัน จะใช้เป็น dictionary และใช้ sorted() พื่อเรียงลำดับตามคีย์(Key)

arsort()

ทำงานเหมือน rsort() ที่เรียงลำดับตามค่า(Value) แต่จะเรียงจากมากไปน้อย

ผลลัพธ์ที่ได้คือ ["7 => Siamese", "10 => Konja", "5 => Khao Manee"] เรียงลำดับมากไปน้อยตามค่า(Value)

  • Java - จะใช้ comparingByValue(Comparator.reverseOrder()) เพื่อเรียงจากมากไปน้อยตามค่า(Value)

  • C - ใช้ qsort() ร่วมกับฟังก์ชันที่สร้างขึ้นเพื่อเรียงลำดับจากมากไปน้อยตามค่า(Value)

  • Python - ใช้ sorted() กับ key=lambda x: x[1] และ reverse=True เพื่อเรียงจากมากไปน้อยตามค่า(Value)

krsort()

ทำงานเหมือน arsort() แต่จะที่เรียงลำดับตามคีย์(Key) จากมากไปน้อย

ผลลัพธ์ที่ได้คือ ["10 => Konja", "7 => Siamese", "5 => Khao Manee"] เรียงลำดับมากไปน้อยตามค่า(Value)

  • Java - ใช้comparingByKey(Comparator.reverseOrder()) เพื่อเรียงลำดับตามคีย์จากมากไปน้อย

  • C - ใช้ qsort() กับฟังก์ชันที่สร้างขึ้นเพื่อเรียงลำดับจากมากไปน้อยตามคีย์(Key)

  • Python - ใช้ sorted() ร่วมกับ key=lambda x: x[0] และ reverse=True เพื่อเรียงจากมากไปน้อยตามคีย์(Key)

Presentation

file-download
2MB

Clip

Reference

Last updated