Transcript Sorting
การจัดเรี ยงข้อมูล Sorting Internal Sorting External Sorting Sorting การเรียงลาดับข้ อมูล ทาให้ ผู้ต้องการใช้ ข้อมูลสามารถ ทาความเข้ าใจกับข้ อมูลหรือค้ นหาได้ ง่ายและเร็วขึน้ โดย อาจจะเรียงจากน้ อยไปหามาก Ascending หรือ มากไปหา น้ อย Descending สามารถแบ่ งออกเป็ น 2 ประเภท คือ Internal Sorting เก็บไว้ ในหน่ วยความจาหลัก External Sorting เก็บไว้ ในหน่ วยความจาสารอง Sorting Type **Selecting Sort **Insertion Sort or Linear Insertion Sort **Bubble Sort **Shell Sort **Bucket Sort or Radix Sort **Quick Sort **Heap Sort or Tree Sort Selection Sort เป็ นวิธีที่ง่ายที่สุดในการเรี ยงลาดับ โดยเริ่ มจากหา ตาแหน่งของข้อมูลที่มีค่าน้อยที่สุดสลับตาแหน่งข้อมูล ใช้วิธีการเคลื่อนย้าย Address Node 40 30 10 50 79 A(1) 90 A(3) 60 95 26 85 10 40 30 60 95 26 85 10 26 40 90 60 95 85 10 26 30 50 79 90 A(2) A(9) 30 50 79 A(3) A(4) 40 50 79 90 60 95 85 Selection Sort A(6) 10 26 30 10 26 30 40 50 A(8) 40 50 A(8) 60 79 A(10) 60 79 90 95 85 85 90 95 Insertion Sort or Linear Insertion Sort อ่านข้อมูลที่ตอ้ งการเรี ยงลาดับเข้ามาทีละตัวโดย เริ่ มจากตัวแรกก่อน และหาตาแหน่งของข้อมูลที่วา่ งแล้ว แทรกข้อมูลตัวที่หนึ่งลงไป Insertion Sort or Linear Insertion Sort 5 1 2 8 9 5 1 1 1 1 1 5 2 2 2 2 2 5 5 5 8 8 8 8 8 9 9 9 9 9 ต้องเพิม่ เนื้อที่ความจาเพิม่ อีก N ตาแหน่ง สาหรับ ส่ วนที่เรี ยงแล้ว A(1:N) ยังไม่ได้เรี ยงต้องใช้ B(1:N) มาช่วย โดยดึงแต่ ละค่าของ A ไปใส่ Bubble Sort เป็ นการจัดเรี ยงโดยการเปรี ยบเทียบข้อมูลที่อยูใ่ น ตาแหน่งที่ติดกัน ถ้าข้อมูลไม่อยูใ่ นลาดับที่ถูกต้องก็จะทา การสลับตาแหน่งของข้อมูลที่เปรี ยบเทียบ เริ่ มจาก A(1) เปรี ยบเทียบกับ A(2) ก่อนแล้วทาต่อไปเรื่ อย ๆ โดยสามารถจัดเรี ยงได้ท้งั จากมากไปหาน้อยและ น้อยไปหามาก Bubble Sort 5 5 5 5 5 5 8 1 1 2 2 2 8 5 2 2 1 1 8 2 2 8 8 8 8 1 1 1 Shell Sort คล้ายกับ Bubble Sort จะมีการแบ่งข้อมูลออกเป็ นกลุ่ม โดยใช้สูตรในการคานวณคือ Ds = D s-1 2 Shell Sort 40 30 10 50 70 90 60 95 Ds = 10 = 5 2 (40,90) (30,60) (10,95) (50,26) (70,85) Ds = 5 = 3 2 (40,60,50, 85) (90,10,26) (30,95,70) Ds = 3 = 2 2 (40,50,90,26,95) (60,85,10,30,70) Ds = 2 2 = 1 26 85 Shell Sort (40 , 50 , 90 , 26 , 95 , 60 , 85 , 10 , 30 , 70) แล้วทาการจัดเรี ยงตามวิธีของ Bubble Sort 10 26 30 40 50 60 70 85 90 95 Radix Sort or Bucket Sort เป็ นการพิจารณาจากค่าข้อมูลออกเป็ นทีละหลัก โดยรอบแรกจะพิจารณาหลักสุ ดท้ายก่อน (หลักหน่วย) รอบต่อไปเป็ นหลักสิ บวนจนครบหลักของข้อมูล Radix Sort or Bucket Sort 81 82 บักเก็ต 0 1 2 3 4 12 68 27 5 9 90 14 42 หลักหน่วย 90 70 81 12 82 42 14 35 70 บักเก็ต 5 6 7 8 9 76 55 37 หลักหน่วย 35 5 55 76 27 37 68 9 Radix Sort or Bucket Sort ผลการจัดแรกเรี ยงรอบแรก 90 76 70 27 บักเก็ต 0 1 2 3 4 81 37 12 68 หลักสิ บ 05 09 12 14 27 35 37 42 82 9 42 14 บักเก็ต 5 6 7 8 9 35 5 หลักสิ บ 55 68 70 76 81 82 90 55 Radix Sort or Bucket Sort ผลลัพธ์พิจารณาจากหลักสิ บ 5 68 9 70 12 76 14 81 27 82 35 90 37 42 55 Quick Sort เป็ นวิธีการจัดเรี ยงที่ใช้เวลาน้อยที่สุด เหมาะ กับข้อมูลปริ มาณมาก ๆ โดยการเลือก Key ขึ้น มาหนึ่งค่าแล้วทาการดึงข้อมูลขึ้นมา Heap Sort เป็ นการเรี ยงโดยใช้วิธี Binary Tree มีเงื่อนไขว่า โหนดที่เป็ นลูกจะต้องมีค่าน้อยกว่าหรื อเท่ากับค่าของ โหนดที่เป็ นพ่อ ตัวข้อมูล 42 23 74 11 65 58 นาค่าแรกมาเป็ นโหนดที่ 1 หรื อ Root 94 36 42 นาโหนดที่ 2 (23) เข้ามาเปรี ยบเทียบกับโหนดพ่อ พิจารณาแล้วมีค่าน้อยกว่าจึงอยูด่ า้ นซ้าย Heap Sort 42 23 นาค่าโหนด 3 (74) มาเทียบกับโหนดพ่อมีค่ามาก กว่าโหนดพ่อซึ่งเท่ากับ 42 จึงทาการสลับ 74 23 42 นาค่าโหนด 4 (11) มาเปรี ยบเทียบกับโหนดพ่อ Heap Sort 74 42 23 11 นาค่าโหนด 5 (65) มาเทียบโหนดพ่อ (23) แต่โหนด 5 มีค่ามากกว่าพ่อจึงสลับ 74 65 11 42 23 Heap Sort นาโหนด 6 (58) เทียบกับโหนดพ่อปรากฏว่าโหนด 6 มีค่ามากกว่าโหนดพ่อจึงสลับ 74 58 65 11 23 42 Heap Sort นาโหนด 7 (94) เทียบกับโหนดพ่อปรากฏว่ามากกว่า โหนดพ่อจึงสลับ แล้ว 58 ยังมากกว่าโหนดพ่อคือ 74 จึง สลับต่อไปจนถึง Root เพราะ 94 มากกว่า Root จึงสลับกัน 94 65 11 74 23 42 58 Heap Sort นาโหนด 8 (36) เทียบกับโหนดพ่อ ปรากฏว่า 36 มากว่าโหนดพ่อจึงสลับ 94 65 36 74 23 42 58 11 จากนั้นให้ค่า Address Node แล้วทาการสลับตาแหน่ง แบบ Selection Sort Heap Sort 11 23 42 36 58 65 74 94 เมื่อผ่านวิธีการแล้วจะได้ค่า 11 23 36 42 58 65 74 94