SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
g)
การเรียงลําดับข้อมล (Sorting)
                  ู (
การเรียงข้อมูลแบ่งได้เป็ นสองลักษณะคือ
  1.   การเรียงข้อมูลแบบภายใน (Internal Sorting)
       ข้อมลจะเก็บอย่ในหน่ วยความจําหลัก (main memory) และการ
       ขอมูลจะเกบอยู นหนวยความจาหลก
เรียงลําดับข้อมูลสามารถอ่านข้อมูลแต่ละชิ้ นจากหน่ วยความจําหลักหรือเขียน
ขอมูลสู นวยความจาหลกไดเลย โดยไมจาเปนตองใชหนวยความจารอง เชน
ข้อมลส่หน่ วยความจําหลักได้เลย โดยไม่จาเป็ นต้องใช้หน่ วยความจํารอง เช่น
                                          ํ
ดิสก์ (disk) หรือเทป (tape) สําหรับเก็บผลลัพธ์ชวคราว
                                                  ั่




                                                                           1
2. การเรียงลําดับข้อมูลแบบภายนอก (External Sorting)
   ข้อมูลมีจานวนมากเกินกว่าที่จะบรรจุุลงในพื้ นที่ความจําหลักได้หมด
          ู ํ
ภายในคราวเดียว จึงต้องแบ่งข้อมูลออกเป็ นส่วนย่อย ๆ ซึ่งแต่ละส่วนมี
ขนาดใหญ่พอที่จะอยูในหน่ วยความจําหลักได้ และจะได้รบการเรียงโดยใช้
           ญ        ู่                                ั
แบบการคํานวณ การเรียงข้อมูลแบบภายนอกจะต้องคิดถึงเวลาที่สญเสียไป ู
อันเนื่ องจากการถ่ายเทข้อมูลระหว่างเทปหรือดิสค์กบหน่ วยความจําหลัก
                           ู                       ั
ด้วย เวลาที่สญเสียไปในการถ่ายเทปข้อมูลระหว่างหน่ วยความจําหลักกับ
              ู
เทปหรือดิสค์จะเป็ นตัวระบุุความดีเลวของแบบการคํานวณแบบเรียงข้อมูล   ู
ภายนอก




                                                                    2
การเรียงลําดับแบบ Bubble Sort
          bubble sort เป็ นแบบหนึ่ งของ exchange sort จะเปรียบ
 เทียบค่า 2 ค่าที่ติดกัน ถ้าไม่ได้อยูในลําดับที่เรากําหนด เช่นจากน้อยไป
                                     ่
 มาก ก็ให้แลกเปลี่ยนตําแหน่ งของค่าทั้ง 2 ค่านั้น แล้วเอาค่าน้อย (หรือค่า
 มาก ถ้าเป็ นการเรียงจากค่ามากไปหาค่าน้อย) เปรียบเทียบกับค่าถัดไปอีก
 เป็ นเช่นนี้ ตลอดไปจนกว่าอยูในลําดับที่ถกต้อง
                             ่           ู
           สมมติวามีรายการข้อมูล 5, 1,10, 3, 15, 2 จะเรียงโดยเทคนิ ค
                  ่
 ของ Bubble Sort (โดยต้องการเรียงจากน้อยไปมากตามแนวบนลงล่าง)
 ทําดังนี้




                                                                            3
ขั้นตอนการทํางาน
          5    1          10   3      15   2          รอบที่ 1
                   สลับ
           1   5      10       3      15   2



           1   5      10       3      15   2
                               สลับ
          1    5          3    10     15   2


           1   5          3    10     15   2
                                               สลับ
           1   5          3    10      2   15

                                                                 4
1   5   3      10   2    15   รอบที่ 2
                              รอบท

1   5   3      10   2    15
        สลับ
1   3   5      10   2    15


1   3   5      10   2    15


1   3   5      2    10   15
รอบที่ 3
                             รอบท
1   3   5   2      10   15



1   3   5   2      10   15


1   3   5   2      10   15
                สลบ
                สลับ
1   3   2   5      10   15
รอบที่ 4
                                 รอบท
1   3   2          5   10   15



1   3   2          5   10   15
            สลบ
            สลับ
1   2   3          5   10   15
2. การเรียงลําดับแบบฮีฟซอร์ท (Heap Sort)
                               (   p     )
      Heap เป็ นต้นไม้ไบนารีที่มีคุณสมบัติวาโหนดใด ๆ ในต้นไม้น้ันจะมีคา
           p                               ่                           ่
คียใหญ่กว่าค่าคียที่อยูใน left son และ right son ของมัน (ถ้าโหนดนั้นมีลก)
   ์             ์ ่                                                     ู
ตัวอย่างดังรูป(ก) เป็ น heap ส่วนรูปที่ (ข) ไม่ใช่ heap
             ู ( )         p       ู ()               p
                      90                                    70
            45                  35                60              50
      39         22        33        30   35           75    30        40
                                20
       รูป ก โครงสร้าง Heap                    รูป ข ไม่ใช่โครงสร้าง Heap


                                                                            8
ขั้นตอนการทํา Heap Sort

    มี 3 ขั้นตอน ไ แก่
                   ได้
    1. สร้างโครงสร้าง heap p
     2. เอาต์พุตคียที่รตโหนด
                    ์ ู
     3. ปรัั
     3 ป บแต่่งต้นไ ท่ีเหลืือใ เป็ น h
                  ้ ไม้้     ให้้ heap
การสร้างโครงสร้าง heap
การสรางโครงสราง
 ตัวอย่างจงสร้างต้นไม้แบบ heap จากข้อมูลต่อไปนี้
      22 35 42 38 32 26 27 90
อิินพุต             ก่อนเป็ นโครงสร้าง heap
                      ่ ป็ โ        ้                  โครงสร้าง heap
                                                       โ      ้
   22           22                                           22
           I
 35                   22          I    35                         35
                35               22                     22
               35                       42         I         42
 42
          22         42    I      22          35       22              35

                                                                            10
อินพุต
     ุ           ก่อนเป็ นโครงสร้าง Heap
                                       p     โครงสร้าง Heap
                                                          p
38           42          I     42                   42
          22    35         38         35       38         35
                          22               22
         38    I
 32                  42                              42
               38             35                38        35
          22        32    I                22        32




                                                               11
อินพุต        ก่อนเป็ นโครงสร้าง Heap              โครงสร้าง Heap
                           42                               42
  26                                                  38          35
                 38             35
                                          I        22         32        26
         22           32 26
  27                    42                                        42
                38                   35                 38                   35
                                               I
         22           32        26        27       22        32        26         27




                                                                                   12
อินพุต
     ุ       ก่อนเป็ นโครงสร้าง Heap
             กอนเปนโครงสราง                      โครงสร้าง Heap
                                                 โครงสราง
                         42
                   38                  35
             22         32        26        27
             90    I
   90                        42
         I         38                  35
              90        32        26        27
             22



                                                                  13
อินพุต
     ุ       ก่อนเป็ นโครงสร้าง Heap
             กอนเปนโครงสราง                            โครงสร้าง Heap
                                                       โครงสราง
                         42
         I         38                  35
             90         32        26        27
                                                           90
             22
   90                        42                       42         35
              I
                   90                  35
                                                 38        32   26      27
              38        32        26        27
             22                                  22

                                                 โครงสร้างHeap ที่ได้

                                                                        14
โครงสราง heap ทไดกคออารเรยดงรูปท
 โครงสร้าง h ที่ได้ก็คืออาร์เรย์ดงรปที่ 6
                                 ั
                 1    2    3    4    5    6    7    8
            A   90    42   35   38   32   26   27   22
ต้นไม้ที่เห็นระหว่างการสร้าง heap นั้น เป็ นการตีความข้อมูลในอาร์เรย์
                                 p                        ู
หลังจากที่ขอมูลเรียงในรูปโครงสร้าง heap แล้ว จะเอาเอาต์พุตค่ารูต
             ้
โหนดซึ่งอย่ที่ตาแหน่ งที่ 1 ในอาร์เรย์ การเอาตพุตจะใหคา A(1) แลกที่
โหนดซงอยู ตาแหนงท ในอารเรย การเอาต์พตจะให้ค่า
               ํ                                               แลกท
กับค่าสุดท้ายของอาร์เรย์ A(8) การแทนในรูปต้นไม้ ค่าที่เอาต์พุตไปแล้ว
จะแทนโดยโหนดสเหลยม
       โ โ         ี่ ี่




                                                                15
ต้นไม้รปที่ 7 (ข) ที่ได้ (ไม่นับโหนดสี่เหลี่ยม) ไม่เป็ นโครงสร้าง heap
        ู     ()           (                   )                     p
จากนี้ ต่อไปเราต้องใช้อลกอริทึมปรับค่าคียต่าง ๆ ในต้นไม้ให้มี
                         ั                   ์
คณสมบัติ heap
คุณสมบต
                                                         22
                90
          42           35                      42                  35
     38           26         27           38        32        26        27
22                                   90
     (ก) ก่อนเอาต์พุตค่า                       (ข) หลังเอาต์พุตค่า 90
     90


                                                                         16
การปรับต้นไม้ที่ได้จากการแลกค่าให้มีคณสมบติ Heap
การปรบตนไมทไดจากการแลกคาใหมคุณสมบัต

การปรับแต่งทําได้โดยเลื่อนค่าที่ รูตโหนดจากบนลงมาล่างดังนี้
                                   ู

 ขั้นที่ 1 : ให้ต้งต่าพอยน์เตอร์ I ชี้ ไปยังรูตโหนด
                  ั
 ขั้นที่ 2 : ให้เลือกค่าที่ใหญ่ที่สุดระหว่าง left son และ right son ของโหนด I เป็ น
             ค่าที่เลื่อนมาอยูที่ตาแหน่ ง I ส่วนค่าคียท่ีตาแหน่ ง I ก็เลื่อนไปอยูที่
                              ่ ํ                     ์ ํ                        ่
             ตําแหน่ ง left son หรือ right son ของมันที่มีคาใหญ่กว่า จากนั้นเลื่อน
                                                            ่
             พอยน์เตอร์ I มาอยูที่ตาแหน่ งใหม่นี้
                                  ่ ํ
 ขั้นที่ 3 : ทําขั้นที่ 2 จนกว่าจะทําไม่ได้




                                                                                17
I
          22                            I         42
                                       22                    35
     42            35
                                  38         32         26        27
38        32       26   27
                                90               (ข)
90         (ก)
                                            42
                                                        35
                           I     38
                           22          32          26        27
                                                 (ค)
                                                 ( )
                         90
                    รูป ค. การปรับต้นไม้ให้มีคุณสมบัต Heap
                      ู                                  p
                                                                       18
I
           27                              I        38
                                          27                   35
      38            35
                                     22         32        26        42
22         32       26        42
                                    90              (ข)
90
     (ก) เอาต์พตคา 42 ได้
         เอาตพุตค่า ได
                                         38
                               32                   35
                                      I
                         22          27        26         42
                    90
                          (ค) ต้นไม้นี้เป็ น Heap
                              ตนไมนเปน
                                                                         19
20
3. การเรียงลําดับแบบ Quick Sort
   การเรยงลาดบแบบ
   quick sort เป็ นวิธีการเรียงลําดับข้อมลที่เหมาะกับลิสต์(รายการข้อมล)
                  เปนวธการเรยงลาดบขอมูลทเหมาะกบลสต(รายการขอมูล)
   ขนาดใหญ่ และเป็ นวิธีเรียงข้อมูลที่ให้ค่าเฉลี่ยของเวลาที่ใช้น้อยที่สุด
   เท่าที่คนพบวิธีหนึ่ ง สมมติ A(K1, K2, ..., Kn) เป็ นลิสต์ของค่าหรือ
   เทาทคนพบวธหนง สมมต
            ้                                         เปนลสตของคาหรอ
   เรคอร์ดที่ยงไม่ได้เรียง จะเลือก K1 จากนั้นจะแบ่งลิสต์ A นี้ ออกเป็ น 2
                ั
   ลิสต์ยอย S1 และ S2 โดยที่
   ลสตยอย ่              โดยท
              S1 ประกอบด้วยเรคอร์ดที่มีคาคียนอยกว่า K1
                                          ่ ์ ้
              S2 ประกอบด้วยเรคอร์ดที่มีคาคียมากกว่า K1
                    ประกอบดวยเรคอรดทมคาคยมากกวา
                                           ่ ์
   สามารถเขียนลิสต์ A ได้ดงนี้ั
              {S1} < K1 < {S2}


                                                                            21
ลิิ ส ต์์ { 1 } และ { 2 } เป็ นค่่า ต่่ า ง ๆ ทีี่ ยัง ไม่่ไ ด้เ รีี ย ง จากนั้ั น ก็็ ทํา วิิธี
                          {S          {S ป็                            ไ ้
ดังกล่าวซํ้ากับ {S1} และ {S2} ตามลําดับ (อย่างรีเคอร์ซีฟ) ในที่สุดก็จะได้
ลิิสต์ที่เรีียงตามทีี่ตองการ มีข้นตอนดงนีี้
             ์                   ้          ีั         ั
                          1. การเรียงข้อมูลจะเริ่มโดยใช้พอยน์เตอร์ 2 ตัวคือ F และ R
ใ ้ F มีีค่า 1 ซึึ่งก็็คือชีี้ ไปยงคาคีียตวแรก สวน R มีีค่าเทากบ n นนคืือชีี้ ไปยง
ให้                                  ไป ั ่ ์ ั                   ่              ่ ั         ั่        ไป ั
ค่าคียตวสุดท้ายในลิสต์
               ์ ั
                         2. เปรยบเทยบระหวางคาทถูกชโดย F และ R จากนนแบงลสต์
                               ปี         ี          ่ ่ ี่ ี้ โ                                ้ั ่ ิ
นี้ ออกเป็ น 2 ลิสต์ยอย โดยใช้คา K1 เป็ นตัวเปรียบเทียบ ฉะนั้นพอยน์เตอร์
                                   ่             ่
ทชไปยง K1 ไ ่ ่ ป็ F หรอ R จะไมเปนตวเลอนไปยงตาแหนงอน)
      ี่ ี้ ไป ั ไมวาจะเปน                     ื         ไ ่ ป็ ั ื่ ไป ั ํ                 ่ ื่ )
                          3. ทุกครั้งที่มีการเปรียบเทียบจะมีการเลื่อนพอยน์ เตอร์ F ไป
ขางหนา คอจากซายไปขวา หรอ R จะเลอนถอยหลง นนคอจากขวาไปซาย
    ้            ้ ื           ซ้ ไป               ื           ื่            ั ั่ ื                 ไปซ้
การจะเลื่อนพอยน์เตอร์ตวใดให้ใช้กฏต่อไปนี้
                                        ั

                                                                                                           22
“ให้เลื่อนพอยน์เตอร์ตวที่ไม่ใช่ชี้ไปยังค่า K1 หรือที่ทาหน้าที่ K1 ในการเรียง
                        ั                               ํ
เที่ยวนั้น เมื่อ F พบ R ที่คา K1 ก็เป็ นอันว่าเสร็จสิ้ นการเรียงเที่ยวนั้น”
                            ่

ให้ชุดคียที่จะเรียงมีดงนี้ (27, 15, 22, 37, 11, 59, 18, 50, 42)
         ์            ั

  การเรียงแถวที่ 1
    27 15 22 37 11 59                            18 50 42
     F                                                  R
    27 15 22 37 11 59                            18 50 42
     F                                              R

                                                                           23
27 15 22 37 11 59 18 50 42
แลกที่    F                R
         18 15 22 37 11 59 27 50 42
         F                 R
         18 15 22 37 11 59 27 50 42
             F             R
         18 15 22 37 11 59 27 50 42
               F           R


                                      24
18 15 22 37 11 59 27 50 42
แลกที่             F        R
         18 15 22 27 11 59 37 50 42
                  F        R
         18 15 22 27 11 59 37 50 42
                  F     R




                                      25
18 15 22 27                  11 59 37 50 42
แลกที่                 F                   R
              18 15 22 11                  27 59 37 50 42
                       F                   R
             18 15 22 11                 27 59           37 50 42
                                         FR
 ณ จุดนี้ คีย์ 27 ได้แบ่งลิสต์ที่กาหนดให้เป็ นลิสต์ยอย 2 ลิสต์ ดังนี้
                                  ํ                 ่
                ( , , , )
                (18, 15, 22, 11) 27 (59, 37, 50, 42)
                                         ( , , , )



                                                                        26
18 15 22 11) (27) (59 37 50 42)
แลกที่    F        R
         (11 15 22 18) (27) (59 37 50 42)
          F        R
         (11 15 22 18)     ……….
             F      R




                                            27
(11 15 22   18) (27) (59 37 50 42)
แลกที่          F    R
         (11 15 18   22) (27) (59 37 50 42)
                F    R
         (11 15 18 22)         ……….
                  FR
         (11 15) (18) (22) (27) (59 37 50 42)
          F R


                                                28
11 15 18 22 27 (59 37 50 42)
                F           R
      .....    (42 37 50 59)
                 F         R
       .…       (42 37 50 59)
                     F     R
       ….        (42 37 50 59)
                        F R
11 15 18 22 27 (42 37 50) (59)
                             FR


                                  29
11 15 18 22 27 ((42           37 50))   (59)
                                        ( )
                 F                R
11 15 18 22 27 (
               (42            37 50))   (59)
                                        ( )
                 F            R
11 15 18 22 27 ((37           42 50))   (59)
                                        ( )
                 F             R
11 15 18 22 27 ( )
                (37)         (42) ( )
                             ( ) (50)   59)
                                          )
                              FR
เปนชุดคยทเรยงเรยบร้้อยแล้ว
 ป็    ี ์ ี่ ี ี        ้




                                               30
4. การเรียงลําดับแบบ Radix Sort
   การเรยงลาดบแบบ
   การเรยงแบบนเราจะใชแตละตาแหนงตวเลขของแตละคย
   การเรียงแบบนี้ เราจะใช้แต่ละตําแหน่ งตัวเลขของแต่ละคีย์ โดย
   เริ่มตั้งแต่ตาแหน่ งนัยสําคัญน้อยที่สุด (least significant digit)
                ํ
   การเรยงกงายมาก ขนแรกใหเตรยมถง ถง ( ถง ในทน
   การเรียงก็งายมาก ขั้นแรกให้เตรียมถัง 10 ถัง (“ถัง” ในที่นี้
                  ่
   อาจเป็ นคิวหรืออาร์เรย์ก็ได้) ในแต่ละเที่ยวของการเรียงจะใส่
   ค่่าคีียไปเข้าแต่่ละถังตามค่่าตัวเลขในแต่่ละตําแหน่่ ง)
            ์ ้          ั         ั ใ             ํ




                                                                       31
ให้ชุดคียที่จะเรียงมีดงนี้ (156, 425, 679, 128, 420, 067, 772, 895,
         ์            ั
825)
           การเรียงเที่ยวที่ 1 กระจายค่าคียไปตามถังต่าง ๆ ตามค่าตัวเลขที่
                                           ์
ตําแหน่ งขวาสุด 156 425 679 128 420 067 772 895
825
           ถังที่ 0 420
           ถังที่ 1
           ถังที่ 2 772
           ถังที่ 3
           ถังที่ 4
           ถังที่ 5 425 895 825
           ถังที่ 6 156
           ถังที่ 7     067
           ถังที่ 8 128
           ถังที่ 9 679                                                32
เมื่ออ่านค่าในแต่ละถังออกมาตามลําดับจะได้คาต่าง ๆ ดังนี้
                                          ่
420 772 425 895 825 156 067 128 679
          การเรียงเที่ยวที่ 2
              420 772 425 895 825 156 067 128
679
          ถังที่ 0
          ถังที่ 1
          ถังที่ 2 420 425 825 128
          ถังที่ 3
          ถังที่ 4
          ถังที่ 5 156
          ถังที่ 6 067
          ถังที่ 7 772 679
          ถังที่ 8
          ถังที่ 9 895                                     33
เมื่ออ่านค่าต่าง ๆ ในแต่ละถังออกมาตามลําดับจะได้
          420 425 825 128 156 067 772 679 895
          การเรียงเที่ยวที่ 3 ในเที่ยวนี้ เราจะพิจารณาตําแหน่ งซ้ายสุด
                      420 425 825 128 156 067 772 679 895
          ถังที่ 0 067
          ถังทีี่ 1 128 156
            ั
          ถังที่ 2
          ถังทีี่ 3
              ั
          ถังที่ 4 420 425
          ถังทีี่ 5
                ั
          ถังที่ 6 679
          ถังทีี่ 7 772
                  ั
          ถังที่ 8 825 895
          ถังทีี่ 9 ั
                                                                     34
เมืื่ออ่่านค่าต่่าง ๆ ในแต่่ละถังออกมาจะได้ชุดคีียที่เรีียงแล้วเป็ น
             ่        ใ         ั       ไ ้       ์           ้ ป็
ดังนี้
           067 128 156 420 425 679 772 825
895




                                                                       35
5. การเรียงลําดับแบบ Shell Sort
    การเรียงลําดับแบบ Shell Sort จะทําการแบ่งข้อมูล โดยกําหนดค่าที่จะอยู่
 ในลสตยอยหนง ๆ ดวยการกาหนดคา h เปนระยะทางระหวางคาสองคาใด ๆ
 ใ ิส ์ ่        ึ่    ้       ํ    ่ ป็                ่ ่ส ่ใ
 ในคียชุดนั้นที่จะอยูในลิสต์ยอย แต่ละลิสต์ยอยจะมีคียอยูประมาณ n/h ค่า
      ์              ่       ่             ่        ์ ่
    การเลือกค่า hi วิธีการเลือกค่า hi มีอยูหลายแบบ ในที่นี้จะกล่าวถึง
                                                  ่
 2 แบบ คือ
    1. ให้เลือก hi = 2i - 1 โดยที่คา i อยูระหว่าง 1 และ (log2 n)
                                          ่     ่
    2. ชุุดค่า hi ที่ใช้ได้ดีอีกแบบหนึ่ งกําหนดโดยสมการ
                              H i = 3i - 1
                                     2
    สํ ั ่ i อยูระหวาง 1 และ t โ ี่ t เปนคาจานวนเตมนอย
    สาหรบคา ่ ่                             โดยท ป็ ่ ํ    ็ ้
    ที่สุดที่สอดคล้องกับ อสมการ ht + 2 >= n

                                                                        36
ตวอยาง
ตัวอย่าง

     จงเรยงลาดบขอมูลตอไปน 37, 32, 14, 45, 92, 18, 19, 34, 31, โดยใช
     จงเรียงลําดับข้อมลต่อไปนี้ 37 32 14 45 92 18 19 34 31 35 โดยใช้
วิธีการเรียงลําดับแบบ Shell Sort
ขั้นตอนการทํางาน
ขนตอนการทางาน
     จะเลือกค่า hi จากแบบ (1) ที่กล่าวมาแล้ว เนื่ องจาก n = 10 จะได้วา
                                                                     ่
(log2 10) = 3
     ดังนั้นค่า i ที่ใช้คือ 3, 2 และ 1 และจากสมการ hi = 2i - 1 จะได้
h3 = 7 h2 = 3 h1 = 1 ตามลําดับ
      7,       3,           ตามลาดบ




                                                                   37
การเรยงเทยวท
การเรียงเที่ยวที่ 1      H3 = 7

     37 32 14 45 92 18 19 34 31 35



 การเรียงเที่ยวที่ 1 จะมี 3 ลิสต์ยอย ดังที่แสดงโดยเส้นที่โยงไว้
                                  ่
 3 ลิสต์ยอยนี้ คือ (37, 34) (32, 31) (14, 35) หลังจาก
         ่
 การเรียงแต่ละลิสต์ยอยแล้วจะได้ชุดตัวเลขดังนี้
                      ่




                                                                  38
การเรียงเที่ยวที่ 1 จะมี 3 ลิสต์ยอย ดังที่แสดงโดยเส้นที่โยงไว้ 3 ลิสต์
                                   ่
ย่อยนี้ คือ (37, 34) (32, 31) (14, 35) หลังจากการเรียงแต่ละลิสต์ยอย
                                                                  ่
แลวจะไดชุดตัวเลขดังนี้
แล้วจะได้ชดตวเลขดงน
การเรียงเที่ยวที่ 2
                                      h2 = 3
    34 31 14 45 92 18 19 37 32 35




                                                                     39
การเรียงเที่ยวนี้ จะประกอบด้วย 3 ลิสต์ยอย คือ (34, 45, 19, 35)
                                       ่
(31, 92, 37) และ (14, 18, 32) หลังจากการเรียงแต่ละลิสต์ยอยแล้วจะ
                                                           ่
ได้
     19 31 14 34 37 18 35 92 32 45

การเรียงเที่ยวที่ 3 h1= 1
          การเรยงเทยวนจะประกอบดวยลสตเพยงลสตเดยว นนคอทุกคาใน
          การเรียงเที่ยวนี้ จะประกอบด้วยลิสต์เพียงลิสต์เดียว นันคือทกค่าใน
                                                                ่
ลิสต์นี้ การเรียงเท่ากับการใช้ insertion sort หรือการเรียงแบบอื่น ๆ

          19 31 14 34 37 18 35 92 32 45




                                                                             40
แบบฝึึ กหัด
                                       ั

1. จากข้อมูล 156, 425, 679, 128, 420, 067, 772, 895, 835 จงเรียงลําดับ
   ข้อมลจากน้อยไปหามากด้วยวิธีการเรียงแบบ Bubble Sort
        ู
2. จงเรียงลําดับโดย Bubble Sort และสร้างต้นไม้แบบ Heap จากข้อมูลต่อไปนี้
        45 , 20 , 9 , 100 , 32 , 28 , 1
3. จากโครงสร้างต้นไม้แบบ Heap ที่ได้ในข้อ 2 ให้ นําเอาท์พุตที่ Root Nod
    ออก พร้อมปรับแต่งต้นไม้ให้เป็ น Heapp




                                                                     41

Mais conteúdo relacionado

Mais de suebloei

Mais de suebloei (6)

Nsc2012
Nsc2012Nsc2012
Nsc2012
 
Graph
GraphGraph
Graph
 
Mark test
Mark testMark test
Mark test
 
Tree
TreeTree
Tree
 
Stack
StackStack
Stack
 
Check box
Check boxCheck box
Check box
 

Sorting

  • 1. g) การเรียงลําดับข้อมล (Sorting) ู ( การเรียงข้อมูลแบ่งได้เป็ นสองลักษณะคือ 1. การเรียงข้อมูลแบบภายใน (Internal Sorting) ข้อมลจะเก็บอย่ในหน่ วยความจําหลัก (main memory) และการ ขอมูลจะเกบอยู นหนวยความจาหลก เรียงลําดับข้อมูลสามารถอ่านข้อมูลแต่ละชิ้ นจากหน่ วยความจําหลักหรือเขียน ขอมูลสู นวยความจาหลกไดเลย โดยไมจาเปนตองใชหนวยความจารอง เชน ข้อมลส่หน่ วยความจําหลักได้เลย โดยไม่จาเป็ นต้องใช้หน่ วยความจํารอง เช่น ํ ดิสก์ (disk) หรือเทป (tape) สําหรับเก็บผลลัพธ์ชวคราว ั่ 1
  • 2. 2. การเรียงลําดับข้อมูลแบบภายนอก (External Sorting) ข้อมูลมีจานวนมากเกินกว่าที่จะบรรจุุลงในพื้ นที่ความจําหลักได้หมด ู ํ ภายในคราวเดียว จึงต้องแบ่งข้อมูลออกเป็ นส่วนย่อย ๆ ซึ่งแต่ละส่วนมี ขนาดใหญ่พอที่จะอยูในหน่ วยความจําหลักได้ และจะได้รบการเรียงโดยใช้ ญ ู่ ั แบบการคํานวณ การเรียงข้อมูลแบบภายนอกจะต้องคิดถึงเวลาที่สญเสียไป ู อันเนื่ องจากการถ่ายเทข้อมูลระหว่างเทปหรือดิสค์กบหน่ วยความจําหลัก ู ั ด้วย เวลาที่สญเสียไปในการถ่ายเทปข้อมูลระหว่างหน่ วยความจําหลักกับ ู เทปหรือดิสค์จะเป็ นตัวระบุุความดีเลวของแบบการคํานวณแบบเรียงข้อมูล ู ภายนอก 2
  • 3. การเรียงลําดับแบบ Bubble Sort bubble sort เป็ นแบบหนึ่ งของ exchange sort จะเปรียบ เทียบค่า 2 ค่าที่ติดกัน ถ้าไม่ได้อยูในลําดับที่เรากําหนด เช่นจากน้อยไป ่ มาก ก็ให้แลกเปลี่ยนตําแหน่ งของค่าทั้ง 2 ค่านั้น แล้วเอาค่าน้อย (หรือค่า มาก ถ้าเป็ นการเรียงจากค่ามากไปหาค่าน้อย) เปรียบเทียบกับค่าถัดไปอีก เป็ นเช่นนี้ ตลอดไปจนกว่าอยูในลําดับที่ถกต้อง ่ ู สมมติวามีรายการข้อมูล 5, 1,10, 3, 15, 2 จะเรียงโดยเทคนิ ค ่ ของ Bubble Sort (โดยต้องการเรียงจากน้อยไปมากตามแนวบนลงล่าง) ทําดังนี้ 3
  • 4. ขั้นตอนการทํางาน 5 1 10 3 15 2 รอบที่ 1 สลับ 1 5 10 3 15 2 1 5 10 3 15 2 สลับ 1 5 3 10 15 2 1 5 3 10 15 2 สลับ 1 5 3 10 2 15 4
  • 5. 1 5 3 10 2 15 รอบที่ 2 รอบท 1 5 3 10 2 15 สลับ 1 3 5 10 2 15 1 3 5 10 2 15 1 3 5 2 10 15
  • 6. รอบที่ 3 รอบท 1 3 5 2 10 15 1 3 5 2 10 15 1 3 5 2 10 15 สลบ สลับ 1 3 2 5 10 15
  • 7. รอบที่ 4 รอบท 1 3 2 5 10 15 1 3 2 5 10 15 สลบ สลับ 1 2 3 5 10 15
  • 8. 2. การเรียงลําดับแบบฮีฟซอร์ท (Heap Sort) ( p ) Heap เป็ นต้นไม้ไบนารีที่มีคุณสมบัติวาโหนดใด ๆ ในต้นไม้น้ันจะมีคา p ่ ่ คียใหญ่กว่าค่าคียที่อยูใน left son และ right son ของมัน (ถ้าโหนดนั้นมีลก) ์ ์ ่ ู ตัวอย่างดังรูป(ก) เป็ น heap ส่วนรูปที่ (ข) ไม่ใช่ heap ู ( ) p ู () p 90 70 45 35 60 50 39 22 33 30 35 75 30 40 20 รูป ก โครงสร้าง Heap รูป ข ไม่ใช่โครงสร้าง Heap 8
  • 9. ขั้นตอนการทํา Heap Sort  มี 3 ขั้นตอน ไ แก่ ได้ 1. สร้างโครงสร้าง heap p 2. เอาต์พุตคียที่รตโหนด ์ ู 3. ปรัั 3 ป บแต่่งต้นไ ท่ีเหลืือใ เป็ น h ้ ไม้้ ให้้ heap
  • 10. การสร้างโครงสร้าง heap การสรางโครงสราง ตัวอย่างจงสร้างต้นไม้แบบ heap จากข้อมูลต่อไปนี้ 22 35 42 38 32 26 27 90 อิินพุต ก่อนเป็ นโครงสร้าง heap ่ ป็ โ ้ โครงสร้าง heap โ ้ 22 22 22 I 35 22 I 35 35 35 22 22 35 42 I 42 42 22 42 I 22 35 22 35 10
  • 11. อินพุต ุ ก่อนเป็ นโครงสร้าง Heap p โครงสร้าง Heap p 38 42 I 42 42 22 35 38 35 38 35 22 22 38 I 32 42 42 38 35 38 35 22 32 I 22 32 11
  • 12. อินพุต ก่อนเป็ นโครงสร้าง Heap โครงสร้าง Heap 42 42 26 38 35 38 35 I 22 32 26 22 32 26 27 42 42 38 35 38 35 I 22 32 26 27 22 32 26 27 12
  • 13. อินพุต ุ ก่อนเป็ นโครงสร้าง Heap กอนเปนโครงสราง โครงสร้าง Heap โครงสราง 42 38 35 22 32 26 27 90 I 90 42 I 38 35 90 32 26 27 22 13
  • 14. อินพุต ุ ก่อนเป็ นโครงสร้าง Heap กอนเปนโครงสราง โครงสร้าง Heap โครงสราง 42 I 38 35 90 32 26 27 90 22 90 42 42 35 I 90 35 38 32 26 27 38 32 26 27 22 22 โครงสร้างHeap ที่ได้ 14
  • 15. โครงสราง heap ทไดกคออารเรยดงรูปท โครงสร้าง h ที่ได้ก็คืออาร์เรย์ดงรปที่ 6 ั 1 2 3 4 5 6 7 8 A 90 42 35 38 32 26 27 22 ต้นไม้ที่เห็นระหว่างการสร้าง heap นั้น เป็ นการตีความข้อมูลในอาร์เรย์ p ู หลังจากที่ขอมูลเรียงในรูปโครงสร้าง heap แล้ว จะเอาเอาต์พุตค่ารูต ้ โหนดซึ่งอย่ที่ตาแหน่ งที่ 1 ในอาร์เรย์ การเอาตพุตจะใหคา A(1) แลกที่ โหนดซงอยู ตาแหนงท ในอารเรย การเอาต์พตจะให้ค่า ํ แลกท กับค่าสุดท้ายของอาร์เรย์ A(8) การแทนในรูปต้นไม้ ค่าที่เอาต์พุตไปแล้ว จะแทนโดยโหนดสเหลยม โ โ ี่ ี่ 15
  • 16. ต้นไม้รปที่ 7 (ข) ที่ได้ (ไม่นับโหนดสี่เหลี่ยม) ไม่เป็ นโครงสร้าง heap ู () ( ) p จากนี้ ต่อไปเราต้องใช้อลกอริทึมปรับค่าคียต่าง ๆ ในต้นไม้ให้มี ั ์ คณสมบัติ heap คุณสมบต 22 90 42 35 42 35 38 26 27 38 32 26 27 22 90 (ก) ก่อนเอาต์พุตค่า (ข) หลังเอาต์พุตค่า 90 90 16
  • 17. การปรับต้นไม้ที่ได้จากการแลกค่าให้มีคณสมบติ Heap การปรบตนไมทไดจากการแลกคาใหมคุณสมบัต การปรับแต่งทําได้โดยเลื่อนค่าที่ รูตโหนดจากบนลงมาล่างดังนี้ ู ขั้นที่ 1 : ให้ต้งต่าพอยน์เตอร์ I ชี้ ไปยังรูตโหนด ั ขั้นที่ 2 : ให้เลือกค่าที่ใหญ่ที่สุดระหว่าง left son และ right son ของโหนด I เป็ น ค่าที่เลื่อนมาอยูที่ตาแหน่ ง I ส่วนค่าคียท่ีตาแหน่ ง I ก็เลื่อนไปอยูที่ ่ ํ ์ ํ ่ ตําแหน่ ง left son หรือ right son ของมันที่มีคาใหญ่กว่า จากนั้นเลื่อน ่ พอยน์เตอร์ I มาอยูที่ตาแหน่ งใหม่นี้ ่ ํ ขั้นที่ 3 : ทําขั้นที่ 2 จนกว่าจะทําไม่ได้ 17
  • 18. I 22 I 42 22 35 42 35 38 32 26 27 38 32 26 27 90 (ข) 90 (ก) 42 35 I 38 22 32 26 27 (ค) ( ) 90 รูป ค. การปรับต้นไม้ให้มีคุณสมบัต Heap ู p 18
  • 19. I 27 I 38 27 35 38 35 22 32 26 42 22 32 26 42 90 (ข) 90 (ก) เอาต์พตคา 42 ได้ เอาตพุตค่า ได 38 32 35 I 22 27 26 42 90 (ค) ต้นไม้นี้เป็ น Heap ตนไมนเปน 19
  • 20. 20
  • 21. 3. การเรียงลําดับแบบ Quick Sort การเรยงลาดบแบบ quick sort เป็ นวิธีการเรียงลําดับข้อมลที่เหมาะกับลิสต์(รายการข้อมล) เปนวธการเรยงลาดบขอมูลทเหมาะกบลสต(รายการขอมูล) ขนาดใหญ่ และเป็ นวิธีเรียงข้อมูลที่ให้ค่าเฉลี่ยของเวลาที่ใช้น้อยที่สุด เท่าที่คนพบวิธีหนึ่ ง สมมติ A(K1, K2, ..., Kn) เป็ นลิสต์ของค่าหรือ เทาทคนพบวธหนง สมมต ้ เปนลสตของคาหรอ เรคอร์ดที่ยงไม่ได้เรียง จะเลือก K1 จากนั้นจะแบ่งลิสต์ A นี้ ออกเป็ น 2 ั ลิสต์ยอย S1 และ S2 โดยที่ ลสตยอย ่ โดยท S1 ประกอบด้วยเรคอร์ดที่มีคาคียนอยกว่า K1 ่ ์ ้ S2 ประกอบด้วยเรคอร์ดที่มีคาคียมากกว่า K1 ประกอบดวยเรคอรดทมคาคยมากกวา ่ ์ สามารถเขียนลิสต์ A ได้ดงนี้ั {S1} < K1 < {S2} 21
  • 22. ลิิ ส ต์์ { 1 } และ { 2 } เป็ นค่่า ต่่ า ง ๆ ทีี่ ยัง ไม่่ไ ด้เ รีี ย ง จากนั้ั น ก็็ ทํา วิิธี {S {S ป็ ไ ้ ดังกล่าวซํ้ากับ {S1} และ {S2} ตามลําดับ (อย่างรีเคอร์ซีฟ) ในที่สุดก็จะได้ ลิิสต์ที่เรีียงตามทีี่ตองการ มีข้นตอนดงนีี้ ์ ้ ีั ั 1. การเรียงข้อมูลจะเริ่มโดยใช้พอยน์เตอร์ 2 ตัวคือ F และ R ใ ้ F มีีค่า 1 ซึึ่งก็็คือชีี้ ไปยงคาคีียตวแรก สวน R มีีค่าเทากบ n นนคืือชีี้ ไปยง ให้ ไป ั ่ ์ ั ่ ่ ั ั่ ไป ั ค่าคียตวสุดท้ายในลิสต์ ์ ั 2. เปรยบเทยบระหวางคาทถูกชโดย F และ R จากนนแบงลสต์ ปี ี ่ ่ ี่ ี้ โ ้ั ่ ิ นี้ ออกเป็ น 2 ลิสต์ยอย โดยใช้คา K1 เป็ นตัวเปรียบเทียบ ฉะนั้นพอยน์เตอร์ ่ ่ ทชไปยง K1 ไ ่ ่ ป็ F หรอ R จะไมเปนตวเลอนไปยงตาแหนงอน) ี่ ี้ ไป ั ไมวาจะเปน ื ไ ่ ป็ ั ื่ ไป ั ํ ่ ื่ ) 3. ทุกครั้งที่มีการเปรียบเทียบจะมีการเลื่อนพอยน์ เตอร์ F ไป ขางหนา คอจากซายไปขวา หรอ R จะเลอนถอยหลง นนคอจากขวาไปซาย ้ ้ ื ซ้ ไป ื ื่ ั ั่ ื ไปซ้ การจะเลื่อนพอยน์เตอร์ตวใดให้ใช้กฏต่อไปนี้ ั 22
  • 23. “ให้เลื่อนพอยน์เตอร์ตวที่ไม่ใช่ชี้ไปยังค่า K1 หรือที่ทาหน้าที่ K1 ในการเรียง ั ํ เที่ยวนั้น เมื่อ F พบ R ที่คา K1 ก็เป็ นอันว่าเสร็จสิ้ นการเรียงเที่ยวนั้น” ่ ให้ชุดคียที่จะเรียงมีดงนี้ (27, 15, 22, 37, 11, 59, 18, 50, 42) ์ ั การเรียงแถวที่ 1 27 15 22 37 11 59 18 50 42 F R 27 15 22 37 11 59 18 50 42 F R 23
  • 24. 27 15 22 37 11 59 18 50 42 แลกที่ F R 18 15 22 37 11 59 27 50 42 F R 18 15 22 37 11 59 27 50 42 F R 18 15 22 37 11 59 27 50 42 F R 24
  • 25. 18 15 22 37 11 59 27 50 42 แลกที่ F R 18 15 22 27 11 59 37 50 42 F R 18 15 22 27 11 59 37 50 42 F R 25
  • 26. 18 15 22 27 11 59 37 50 42 แลกที่ F R 18 15 22 11 27 59 37 50 42 F R 18 15 22 11 27 59 37 50 42 FR ณ จุดนี้ คีย์ 27 ได้แบ่งลิสต์ที่กาหนดให้เป็ นลิสต์ยอย 2 ลิสต์ ดังนี้ ํ ่ ( , , , ) (18, 15, 22, 11) 27 (59, 37, 50, 42) ( , , , ) 26
  • 27. 18 15 22 11) (27) (59 37 50 42) แลกที่ F R (11 15 22 18) (27) (59 37 50 42) F R (11 15 22 18) ………. F R 27
  • 28. (11 15 22 18) (27) (59 37 50 42) แลกที่ F R (11 15 18 22) (27) (59 37 50 42) F R (11 15 18 22) ………. FR (11 15) (18) (22) (27) (59 37 50 42) F R 28
  • 29. 11 15 18 22 27 (59 37 50 42) F R ..... (42 37 50 59) F R .… (42 37 50 59) F R …. (42 37 50 59) F R 11 15 18 22 27 (42 37 50) (59) FR 29
  • 30. 11 15 18 22 27 ((42 37 50)) (59) ( ) F R 11 15 18 22 27 ( (42 37 50)) (59) ( ) F R 11 15 18 22 27 ((37 42 50)) (59) ( ) F R 11 15 18 22 27 ( ) (37) (42) ( ) ( ) (50) 59) ) FR เปนชุดคยทเรยงเรยบร้้อยแล้ว ป็ ี ์ ี่ ี ี ้ 30
  • 31. 4. การเรียงลําดับแบบ Radix Sort การเรยงลาดบแบบ การเรยงแบบนเราจะใชแตละตาแหนงตวเลขของแตละคย การเรียงแบบนี้ เราจะใช้แต่ละตําแหน่ งตัวเลขของแต่ละคีย์ โดย เริ่มตั้งแต่ตาแหน่ งนัยสําคัญน้อยที่สุด (least significant digit) ํ การเรยงกงายมาก ขนแรกใหเตรยมถง ถง ( ถง ในทน การเรียงก็งายมาก ขั้นแรกให้เตรียมถัง 10 ถัง (“ถัง” ในที่นี้ ่ อาจเป็ นคิวหรืออาร์เรย์ก็ได้) ในแต่ละเที่ยวของการเรียงจะใส่ ค่่าคีียไปเข้าแต่่ละถังตามค่่าตัวเลขในแต่่ละตําแหน่่ ง) ์ ้ ั ั ใ ํ 31
  • 32. ให้ชุดคียที่จะเรียงมีดงนี้ (156, 425, 679, 128, 420, 067, 772, 895, ์ ั 825) การเรียงเที่ยวที่ 1 กระจายค่าคียไปตามถังต่าง ๆ ตามค่าตัวเลขที่ ์ ตําแหน่ งขวาสุด 156 425 679 128 420 067 772 895 825 ถังที่ 0 420 ถังที่ 1 ถังที่ 2 772 ถังที่ 3 ถังที่ 4 ถังที่ 5 425 895 825 ถังที่ 6 156 ถังที่ 7 067 ถังที่ 8 128 ถังที่ 9 679 32
  • 33. เมื่ออ่านค่าในแต่ละถังออกมาตามลําดับจะได้คาต่าง ๆ ดังนี้ ่ 420 772 425 895 825 156 067 128 679 การเรียงเที่ยวที่ 2 420 772 425 895 825 156 067 128 679 ถังที่ 0 ถังที่ 1 ถังที่ 2 420 425 825 128 ถังที่ 3 ถังที่ 4 ถังที่ 5 156 ถังที่ 6 067 ถังที่ 7 772 679 ถังที่ 8 ถังที่ 9 895 33
  • 34. เมื่ออ่านค่าต่าง ๆ ในแต่ละถังออกมาตามลําดับจะได้ 420 425 825 128 156 067 772 679 895 การเรียงเที่ยวที่ 3 ในเที่ยวนี้ เราจะพิจารณาตําแหน่ งซ้ายสุด 420 425 825 128 156 067 772 679 895 ถังที่ 0 067 ถังทีี่ 1 128 156 ั ถังที่ 2 ถังทีี่ 3 ั ถังที่ 4 420 425 ถังทีี่ 5 ั ถังที่ 6 679 ถังทีี่ 7 772 ั ถังที่ 8 825 895 ถังทีี่ 9 ั 34
  • 36. 5. การเรียงลําดับแบบ Shell Sort การเรียงลําดับแบบ Shell Sort จะทําการแบ่งข้อมูล โดยกําหนดค่าที่จะอยู่ ในลสตยอยหนง ๆ ดวยการกาหนดคา h เปนระยะทางระหวางคาสองคาใด ๆ ใ ิส ์ ่ ึ่ ้ ํ ่ ป็ ่ ่ส ่ใ ในคียชุดนั้นที่จะอยูในลิสต์ยอย แต่ละลิสต์ยอยจะมีคียอยูประมาณ n/h ค่า ์ ่ ่ ่ ์ ่ การเลือกค่า hi วิธีการเลือกค่า hi มีอยูหลายแบบ ในที่นี้จะกล่าวถึง ่ 2 แบบ คือ 1. ให้เลือก hi = 2i - 1 โดยที่คา i อยูระหว่าง 1 และ (log2 n) ่ ่ 2. ชุุดค่า hi ที่ใช้ได้ดีอีกแบบหนึ่ งกําหนดโดยสมการ H i = 3i - 1 2 สํ ั ่ i อยูระหวาง 1 และ t โ ี่ t เปนคาจานวนเตมนอย สาหรบคา ่ ่ โดยท ป็ ่ ํ ็ ้ ที่สุดที่สอดคล้องกับ อสมการ ht + 2 >= n 36
  • 37. ตวอยาง ตัวอย่าง จงเรยงลาดบขอมูลตอไปน 37, 32, 14, 45, 92, 18, 19, 34, 31, โดยใช จงเรียงลําดับข้อมลต่อไปนี้ 37 32 14 45 92 18 19 34 31 35 โดยใช้ วิธีการเรียงลําดับแบบ Shell Sort ขั้นตอนการทํางาน ขนตอนการทางาน จะเลือกค่า hi จากแบบ (1) ที่กล่าวมาแล้ว เนื่ องจาก n = 10 จะได้วา ่ (log2 10) = 3 ดังนั้นค่า i ที่ใช้คือ 3, 2 และ 1 และจากสมการ hi = 2i - 1 จะได้ h3 = 7 h2 = 3 h1 = 1 ตามลําดับ 7, 3, ตามลาดบ 37
  • 38. การเรยงเทยวท การเรียงเที่ยวที่ 1 H3 = 7 37 32 14 45 92 18 19 34 31 35 การเรียงเที่ยวที่ 1 จะมี 3 ลิสต์ยอย ดังที่แสดงโดยเส้นที่โยงไว้ ่ 3 ลิสต์ยอยนี้ คือ (37, 34) (32, 31) (14, 35) หลังจาก ่ การเรียงแต่ละลิสต์ยอยแล้วจะได้ชุดตัวเลขดังนี้ ่ 38
  • 39. การเรียงเที่ยวที่ 1 จะมี 3 ลิสต์ยอย ดังที่แสดงโดยเส้นที่โยงไว้ 3 ลิสต์ ่ ย่อยนี้ คือ (37, 34) (32, 31) (14, 35) หลังจากการเรียงแต่ละลิสต์ยอย ่ แลวจะไดชุดตัวเลขดังนี้ แล้วจะได้ชดตวเลขดงน การเรียงเที่ยวที่ 2 h2 = 3 34 31 14 45 92 18 19 37 32 35 39
  • 40. การเรียงเที่ยวนี้ จะประกอบด้วย 3 ลิสต์ยอย คือ (34, 45, 19, 35) ่ (31, 92, 37) และ (14, 18, 32) หลังจากการเรียงแต่ละลิสต์ยอยแล้วจะ ่ ได้ 19 31 14 34 37 18 35 92 32 45 การเรียงเที่ยวที่ 3 h1= 1 การเรยงเทยวนจะประกอบดวยลสตเพยงลสตเดยว นนคอทุกคาใน การเรียงเที่ยวนี้ จะประกอบด้วยลิสต์เพียงลิสต์เดียว นันคือทกค่าใน ่ ลิสต์นี้ การเรียงเท่ากับการใช้ insertion sort หรือการเรียงแบบอื่น ๆ 19 31 14 34 37 18 35 92 32 45 40
  • 41. แบบฝึึ กหัด ั 1. จากข้อมูล 156, 425, 679, 128, 420, 067, 772, 895, 835 จงเรียงลําดับ ข้อมลจากน้อยไปหามากด้วยวิธีการเรียงแบบ Bubble Sort ู 2. จงเรียงลําดับโดย Bubble Sort และสร้างต้นไม้แบบ Heap จากข้อมูลต่อไปนี้ 45 , 20 , 9 , 100 , 32 , 28 , 1 3. จากโครงสร้างต้นไม้แบบ Heap ที่ได้ในข้อ 2 ให้ นําเอาท์พุตที่ Root Nod ออก พร้อมปรับแต่งต้นไม้ให้เป็ น Heapp 41