Презентация загружается. Пожалуйста, подождите

Презентация загружается. Пожалуйста, подождите

การเรียงลำดับข้อมูล(Sorting)

Similar presentations


Presentation on theme: "การเรียงลำดับข้อมูล(Sorting)"— Presentation transcript:

1 การเรียงลำดับข้อมูล(Sorting)
BC322 ครั้งที่ 11 การเรียงลำดับข้อมูล(Sorting) BC322 : Computer Programming

2 การเรียงลำดับ (Sorting)
Bubble sort Selection sort BC322 : Computer Programming

3 การเรียงลำดับ (Sorting): Bubble Sort
ทำการเปรียบเทียบค่าในตาราง ครั้งละ 2 ค่า ซึ่งมีตำแหน่งติดกัน [I] กับ [I+1] โดยเริ่มต้น จากซ้ายมือสุด นั่นก็คือ I = 0 ใช้เงื่อนไข x[I] > x[I+1] เป็นตัวพิจารณาว่าจะต้องทำการสลับตำแหน่งระหว่าง 2 ตำแหน่งหรือไม่ ทำการเปรียบเทียบจนกระทั่ง ใน 1 รอบไม่มีการสลับตำแหน่งเลย ถึงหยุดการทำงาน BC322 : Computer Programming

4 การเรียงลำดับ (Sorting): Bubble Sort
[0] [1] [2] [3] [4] 7 4 1 9 2 [X] การเรียงลำดับจากน้อยไปมาก - ทำงาน N-1 รอบ (N คือจำนวนข้อมูล) ค่าที่มากที่สุดของรอบนั้นจะถูกเลื่อนไปอยู่ในช่องสุดท้ายของอาร์เรย์ในรอบนั้น ๆ มีการสลับค่าเมื่อ X[i] > X[i+1] กำหนดให้ทำการเรียงจากน้อยไปมาก BC322 : Computer Programming

5 [0] [1] [2] [3] [4] 7 รอบที่ i=0 4 1 9 2 Bubble Sort
BC322 : Computer Programming

6 [0] [1] [2] [3] [4] รอบที่ i=1 Bubble Sort
BC322 : Computer Programming

7 [0] [1] [2] [3] [4] รอบที่ i=2 Bubble Sort
BC322 : Computer Programming

8 [0] [1] [2] [3] [4] ผลลัพธ์ รอบที่ i=3 Bubble Sort
BC322 : Computer Programming

9 EX1.การเรียงจากน้อยไปมาก (Bubble)
#include <stdio.h> void main() { int i, temp, round; int x[5]={9, 7, 5, 3, 1}; printf("The initialized array\n"); for(i=0; i<5; i++) printf("%d", x[i]); printf("\n"); for(round=0; round<5-1; round++) for(i=0; i<5-1-round; i++) { if(x[i]>x[i+1]) temp = x[i]; x[i] = x[i+1]; x[i+1] = temp; } printf("The ascending-sorted array\n"); printf("%d", x[i]); printf("\n"); ผลรัน BC322 : Computer Programming

10 EX2. การเรียงจากมากไปน้อย (Bubble)
#include <stdio.h> void main() { int i, temp, round; int x[5]={9, 7, 5, 3, 1}; printf("The initialized array\n"); for(i=0; i<5; i++) printf("\n"); for( ) for(i ) { if( ) } printf("The descending-sorted array\n"); printf("%d", x[i]); printf("\n"); ผลรัน BC322 : Computer Programming

11 EX3. การเรียงจากน้อยไปมาก (Bubble) โดยรับค่าอินพุตจากแป้นพิมพ์ (n=5)
ผลรัน โดยเขียนโปรแกรมย่อยดังนี้ 1. โปรแกรมย่อยชื่อ Inputdata สำหรับรับตัวเลขเก็บลงอาร์เรย์ num 2. โปรแกรมย่อยชื่อDisplay สำหรับแสดงค่าตัวเลขในอาร์เรย์ 3.โปรแกรมย่อยชื่อ BubbleSort สำหรับเรียงลำดับข้อมูลในอาร์เรย์จากน้อยไปหามาก BC322 : Computer Programming

12 Solution EX3 BC322 : Computer Programming

13 Solution EX3(ต่อ) BC322 : Computer Programming

14 การเรียงลำดับ (Sorting): Selection Sort
การทำงานของการเรียงลำดับแบบนี้ เริ่มต้น จะทำการเปรียบเทียบข้อมูลในตำแหน่ง [0] กับข้อมูลในตำแหน่งที่เหลือ เพื่อหาข้อมูลที่น้อยที่สุดมาใส่แทน เมื่อหาข้อมูลที่น้อยที่สุดมาใส่ในตำแหน่ง [0] เรียบร้อยแล้ว ต่อไปก็ทำการเปรียบเทียบ ข้อมูลในตำแหน่ง [1] กับตำแหน่งที่เหลือ เพื่อหาข้อมูลที่น้อยเป็นลำดับต่อมาใส่ในตำแหน่ง [1] ทำต่อไปเรื่อยๆ จนครบ BC322 : Computer Programming

15 การเรียงลำดับ (Sorting): Selection Sort
[0] [1] [2] [3] [4] 7 4 1 9 2 [X] การเรียงลำดับจากน้อยไปมาก - ทำงาน N-1 รอบ (N คือจำนวนข้อมูล) - ต้องหาค่าน้อยที่สุดของรอบนั้น - ค่าน้อยที่สุดในรอบนั้นจะสลับกับค่าในตำแหน่งแรกของรอบนั้น BC322 : Computer Programming

16 รอบที่ i=0 [0] [1] [2] [3] [4] 7 4 1 9 2 Selection Sort
BC322 : Computer Programming

17 รอบที่ i=1 [0] [1] [2] [3] [4] * Selection Sort
BC322 : Computer Programming

18 รอบที่ i=2 [0] [1] [2] [3] [4] * * Selection Sort
BC322 : Computer Programming

19 รอบที่ i=3 [0] [1] [2] [3] [4] * * * ผลลัพธ์ Selection Sort
BC322 : Computer Programming

20 EX4.การเรียงจากน้อยไปมาก (Selection)
#include <stdio.h> void main() { int i, j, min, temp, x[5]; for(i=0; i<5; i++) { printf("Enter num: "); scanf("%d", &x[i]); } printf("The initialized array\n\n"); printf("%d ", x[i]); printf("\n\n\n\n\n"); for (round= 0; round < 5-1; i++) { min = round; for (i = round+1;i < 5;ij++) { if (x[i] < x[min]) min = i; temp = x[i]; x[i] = x[min]; x[min] = temp; printf("The ascending-sorted array\n\n"); printf("%d ", x[i]); printf("\n\n\n\n\n"); ผลรัน BC322 : Computer Programming

21 ใช้กระดาษเส้นด้านหลังเขียนโปรแกรมค่ะ
Ex5 จงเขียนโปรแกรมเพื่อรับค่าตัวอักษร 5 ตัว เพื่อนำตัวอักษร เรียงลำดับข้อมูลจากมากไปหาน้อย ตัวอย่างการรับค่าและแสดงผล Please enter charater1: F Please enter charater2: A Please enter charater3: X Please enter charater4: M Please enter charater5: S ======================= Sort by descending … X S M F A ใช้กระดาษเส้นด้านหลังเขียนโปรแกรมค่ะ BC322 : Computer Programming

22 Ex5 จงเขียนโปรแกรมเพื่อรับอายุ และเกรดเฉลี่ยของนักศึกษา 5 คน แล้วเรียงข้อมูลทั้งหมดตาม อายุจากน้อยไปหามาก ตัวอย่างผลรัน Student1 Please enter age : 20 Please enter weight : 49.8 ==================== Student2 Please enter age : 18 Please enter weight : 50.5 Student3 Please enter age : 22 Please enter weight : 60.9 Student4 Please enter age : 17 Please enter weight : 58.4 Student5 Please enter age : 21 Please enter weight : 56.0 Summary of student data… =============== Age Weight BC322 : Computer Programming

23 ใช้กระดาษเส้นด้านหลังเขียนโปรแกรมค่ะ
โดยเขียนโปรแกรมย่อยดังนี้ Inputdata รับค่า SelectionSort เรียงลำดับข้อมูล Report แสดงผลลัพธ์ ใช้กระดาษเส้นด้านหลังเขียนโปรแกรมค่ะ BC322 : Computer Programming


Download ppt "การเรียงลำดับข้อมูล(Sorting)"

Similar presentations


Ads by Google