![Page 1: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/1.jpg)
การเรยงขอมล
![Page 2: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/2.jpg)
• การเรยงล าดบขอมล คอการจดเรยงขอมลใหมการเรยงล าดบตามความตองการ
• ขอมลทท าการจดเรยงอาจเปน ตวเลข ตวอกษร เชน การเรยงล าดบตามรายนามผใชโทรศพท
ประโยชนในการจดเรยงล าดบขอมลคอ การเขาถงขอมลไดอยางมประสทธภาพ ไดแก ความเรวในการเขาถง การคนหาขอมล
![Page 3: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/3.jpg)
การเรยงล าดบขอมลในระบบคอมพวเตอร
• จะแบงเปน 2 ลกษณะใหญ ๆ คอ
• การเรยงล าดบขอมลภายใน (Internal sorting)
จะใชกบขอมลทมจ านวนไมใหญกวาเนอทในหนวยความจ า (main memory) โดยจะค านวณและจดเรยงขอมลภายในหนวยความจ าของเครองคอมพวเตอรไดโดยไมตองใชหนวยความจ าส ารอง
![Page 4: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/4.jpg)
• การเรยงล าดบขอมลภายนอก (External sorting)
ใชกบขอมลทมจ านวนใหญเกนกวาทจะเกบลงในหนวยความจ าไดหมดภายในครงเดยว และจะใชหนวยความจ าภายนอก เชน HardDisk ส าหรบเกบขอมลบางสวนทไดจากการเรยง
การเรยงขอมลภายนอกตองค านงถงเวลาทเสยไปในการโอนถายขอมลไปยง หนวยความจ าภายนอกดวย
![Page 5: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/5.jpg)
การเลอกใชอลกอรทม
องกอรทม ในการเรยงล าดบมอยมากมาย เชน
Bubble Sort, Selection Sort, Insertion Sort,
Merge sort Quick Sort Heap Sort Radix,
Sort Shell Sort
องกอรทม แตละตวมขอดขอเสยแตกตางกนไป ดงนนการทจะเลอกใช องกอรทม ตองค านงถงปจจย และสภาพแวดลอมดวย
![Page 6: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/6.jpg)
1. จ านวนขอมล ในการเรยงล าดบขอมลในแตละวธ จะใชในเวลาทตาง ๆ กนขนอยกบจ านวนขอมล เชน ถามจ านวนขอมลมาก เราควรจะใชวธ quick sort มากกวาใชวธ selection sort
2. ขนาดขอมล จะมผลในการบรรจขอมลลงในหนวยความจ า ซงถามขนาดใหญมากจะท าใหเรยงขอมลไดชา ดงนนเราจงนยมใชคยของขอมลแตละอนเปนตวแทนในการจดเรยง
![Page 7: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/7.jpg)
3. ลกษณะของขอมลเดมกอนจะจดเรยงล าดบ เชน วธ insertion sort ใชไดดกบขอมลทมลกษณะเกอบจะจดเรยงแลว
4. การใชเนอทในหนวยความจ า
5. ลกษณะของการจดเรยง (การเรยงล าดบขอมลภายใน หรอ การเรยงล าดบขอมลภายนอก)
![Page 8: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/8.jpg)
Bubble Sort
การท างานของ bubble sort เรมตนเราจะน าขอมลตวท 1 และ 2 มาเปรยบเทยบ ถาขอมลตวท 1 มากกวาตวท 2 กจะท าการสลบท แลวคอยเอาขอมลตวท 2 เปรยบเทยบกบตวท 3 ถาหากขอมลตวท 2 มากกวาตวท 3 กท าการสลบทกน แลวจงคอยเปรยบเทยบกบตวท 3 กบตวท 4 เปนเชนนไปเรอย ๆ จนครบทกตว
![Page 9: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/9.jpg)
Bubble Sort
วธ bubble sort นจะดหรอไมดกขนกบจ านวนและการเรยงล าดบขอมลดวยจากการวเคราะห พบวาวธนจะใชไดดกตอเมอมจ านวนของขอมลนอย ดงนนการเรยงล าดบขอมลวธนจงไมเหมาะส าหรบขอมลจ านวนมาก
![Page 10: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/10.jpg)
ตวอยาง การเรยงล าดบขอมลแบบ bubble sort จากตวอยาง จะท าการเปรยบเทยบขอมลคทายกอน โดยใหขอมลทมคามากสลบไปอยทางทายของขอมล
4 19 18 6 1 8 12 10รอบการท างานท 1
19 4 18 6 1 8 12 1019 18 4 6 1 8 12 10 19 18 6 4 1 8 12 10 19 18 6 4 1 8 12 10 19 18 6 4 8 1 12 10 19 18 6 4 8 12 1 10 19 18 6 4 8 12 10 1
![Page 11: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/11.jpg)
รอบการท างานท 219 18 6 4 8 12 10 1 19 18 6 4 8 12 10 1 19 18 6 4 8 12 10 1 19 18 6 8 4 12 10 1 19 18 6 8 12 4 10 1 19 18 6 8 12 10 4 1 19 18 6 8 12 10 4 1
![Page 12: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/12.jpg)
รอบการท างานท 3 จะไดผลลพธเปน19 18 8 12 10 6 4 1
รอบการท างานท 4 จะไดผลลพธเปน19 18 12 10 8 6 4 1
รอบการท างานท 5 จะไดผลลพธเปน19 18 12 10 8 6 4 1
รอบการท างานท 6 จะไดผลลพธเปน19 18 12 10 8 6 4 1
รอบการท างานท 7 จะไดผลลพธเปน19 18 12 10 8 6 4 1
รอบการท างานท 8 จะไดผลลพธเปน19 18 12 10 8 6 4 1
![Page 13: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/13.jpg)
void bubble_sort(int data[], int num_elts)
{
int i, j;
char flag = 'T';
for (i=0; flag=='T' && i<num_elts ; i++) {
flag = 'F';
for (j=0; j<num_elts-i-1; j++) {
if (data[j] < data[j+1]) {
swap(data, j, j+1);
flag = 'T';
}
}
}
} /* bubble_sort */
void swap(int data[], int a, int b) { int temp;
temp = data[a];data[a] = data[b];data[b] = temp;
} /* swap */
![Page 14: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/14.jpg)
Selection Sort
เปนการเรยงล าดบขอมลทคลายกบวธ bubble sort แตดกวาคอมจ านวนครงของการสลบคานอยกวา หลกการมอยวาในแตละรอบ จะท าการคนหาขอมลตวทมคานอยทสดจากขอมลทยงไมไดท าการจดเรยง แลวขอมลตวทมคานอยทสดมาสลบกบขอมลในต าแหนงทรอบนน ๆ
เชนรอบท 1 จะสลบขอมลทมคานอยทสดกบขอมลทอยในต าแหนงท 1 จากนนท าการหาขอมลทมคานอยทสด
โดยเรมจากต าแหนงท 2 ซงจะถอเปนต าแหนงแรกของขอมลในรอบน แลวท าการสลบขอมลนอยทสด ใหอยในต าแหนงท 2 ท าเชนนไปเรอย ๆ จนกระทง คาทมคานอยทสดท าการสลบกบขอมลทอยในต าแหนงท N-1 จะถอวาการเรยงล าดบขอมลเสรจเรยบรอย
![Page 15: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/15.jpg)
ตวอยาง การเรยงล าดบขอมลแบบ selection sort
ขอมลเรมตน
10 12 8 1 6 18 19 4
รอบการท างานท 1
คา 1 มคานอยทสด สลบกบคาในต าแหนงท 1 จะไดขอมล
[ 10 12 8 1 6 18 19 4 ]
สลบกบคาในต าแหนงท 1 จะไดขอมล
[ 1 12 8 10 6 18 19 4 ]
![Page 16: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/16.jpg)
รอบการท างานท 2
คา 4 มคานอยทสดในชดขอมลใหม
1 [ 12 8 10 6 18 19 4 ]
สลบกบคาในต าแหนงท 2 จะไดขอมล
1 [ 4 8 10 6 18 19 12 ]
![Page 17: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/17.jpg)
รอบการท างานท 3
คา 6 มคานอยทสดในชดขอมลใหม
1 4 [ 8 10 6 18 19 12 ]
สลบกบคาในต าแหนงท 3 จะไดขอมล
1 4 [6 10 8 18 19 12 ]
![Page 18: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/18.jpg)
เมอท าเสรจจะได ดงน
1 4 6 8 10 12 18 [ 19 ]
![Page 19: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/19.jpg)
Selection Sort ดวยภาษาซ
void selection(int elements[], int array_size){int i, j, k;int min, temp;for(i=0;i< array_size;i++){
for(j=i+1;j< array_size;j++){if(a[i]>a[j]){
temp=a[i];a[i]=a[j];a[j]=temp;
}}
}}
![Page 20: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/20.jpg)
Insertion Sort
การเรยงล าดบดวยการแทรกเปนวธการททกคนมกจะใชบอย ๆ เชนในขณะเลนไพกมกจะมการจดเรยงไพตามเลขโดยการหยบมาแทรก การเรยงล าดบชดขอมลจะท าตงแตขอมลตวทสองจนถงตวสดทาย ซงขอมลแตละตวจะน ามาแทรกเขาในต าแหนงทท าใหขอมลเรยงล าดบ ซงจะมผลใหขอมลในต าแหนงทอยหลงต าแหนงทแทรกขยบต าแหนงออกไปเรอย ๆ
จากวธการดงกลาว ถาพจารณาขอมลในต าแหนงท i จะเหนวาขอมลจะถกแบงออกเปนสองสวน คอสวนทไดท าการเรยงล าดบแลว กบสวนทเหลอซงยงไมไดท าการเรยง ขนตอนการเรยง จะเปนการเพม(insert) สมาชกตวใหมเขาไปในเซตทมสมาชกทกตวเรยงล าดบอยแลว และท าใหเซตใหมนมสมาชกทกตวเรยงล าดบดวย
![Page 21: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/21.jpg)
ตวอยางการเรยงล าดบขอมลตอไปน
10 12 8 1 6 18 19 4
เรมตนดวย [ 10 ] ซงมสมาชกตวเดยวเปนเซตทมการเรยงล าดบเรยบรอยแลว
ขอมลเรมตน
[10] 12 8 1 6 18 19 4
![Page 22: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/22.jpg)
เรยงรอบท 1[10 12] 8 1 6 18 19 4
เรยงรอบท 2[8 10 12] 1 6 18 19 4
เรยงรอบท 3[1 8 10 12] 6 18 19 4
เรยงรอบท 4[1 6 8 10 12] 18 19 4
เรยงรอบท 5[1 6 8 10 12 18] 19 4
![Page 23: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/23.jpg)
เรยงรอบท 6
[1 6 8 10 12 18 19] 4
เรยงรอบท 7
[1 4 6 8 10 12 18 19]
![Page 24: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/24.jpg)
void insertion_sort(int data[], int num_elts){
int i, j;
for (i=0; i<num_elts; i++)
for (j=i; (j>0) && (data[j] < data[j-1]); j--)
swap(data, j, j-1);
} /* insertion_sort */
![Page 25: การเรียงข้อมูลmathcom.uru.ac.th/~beebrain/Slide/4122303A/%a1%d2%c3%e0... · 2012-01-27 · 3. ลักษณะของข้อมูลเดิมก่อนจะจัดเรียงล](https://reader033.vdocuments.site/reader033/viewer/2022041816/5e5b3ba81af668422c1454f8/html5/thumbnails/25.jpg)
แบบฝกหด
ท าการเรยงขอมลตอไปน จากมากไปนอย ดวยวธ bubble sort, Selection sort และ Insertion sort
a) 9 8 2 11 17 12 3 6 5
b) C D E A P B E W Q Z
C) -1 1 0 2 -4 8 3 4 5 -7 9