data structure and algorithm

49
DATA STRUCTURE AND DATA STRUCTURE AND ALGORITHM ALGORITHM กกกกกกกกกกกกก กกกกกกกกกกกกก (S (S

Upload: jeslyn

Post on 11-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

การเรียงลำดับข้อมูล (Sorting). Data Structure and Algorithm. Sorting. การจัดเรียงข้อมูลเป็นขั้นตอนหนึ่งที่สำคัญในการประมวลผลข้อมูล ข้อมูลที่จัดเรียงแล้วช่วยให้เราทำงานกับข้อมูลนั้นได้ง่ายขึ้นเช่น. การแสดงผล. การคำนวณ. ประโยชน์ด้านการแสดงผล. รายการโทรศัพท์. จัดเรียงตามวันที่. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Data Structure and  Algorithm

DATA STRUCTURE AND DATA STRUCTURE AND ALGORITHM ALGORITHM

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

Page 2: Data Structure and  Algorithm

การจั�ดัเร�ยงข้�อมู�ลำเป็�นข้��นตอนหน��งที่��สำาคั�ญในการป็ระมูวลำผลำข้�อมู�ลำการจั�ดัเร�ยงข้�อมู�ลำเป็�นข้��นตอนหน��งที่��สำาคั�ญในการป็ระมูวลำผลำข้�อมู�ลำ ข้�อมู�ลำที่��จั�ดัเร�ยงแลำ�วช่&วยให�เราที่างานก�บข้�อมู�ลำน��นไดั�ง&ายข้��นเช่&นข้�อมู�ลำที่��จั�ดัเร�ยงแลำ�วช่&วยให�เราที่างานก�บข้�อมู�ลำน��นไดั�ง&ายข้��นเช่&น

2

Sorting

การคำ�านวณ

การแสดงผล

Page 3: Data Structure and  Algorithm

ป็ระโยช่น)ดั�านการแสำดังผลำ รายการโที่รศั�พที่)

3

จั�ดเร�ยงตามว�นที่��

Page 4: Data Structure and  Algorithm

ป็ระโยช่น)ดั�านการคั�นหาแลำะแสำดังผลำ

4

จั�ดเร�ยงตาม Sender, Subject, Date/Time

Page 5: Data Structure and  Algorithm

ป็ระโยช่น)ดั�านการคัานวณ

5

• การหาคำ�า Median (คำ�าข้�อม�ล ณ . ต�าแหน�งกลางข้องชุ ดข้�อม�ล)

20 25 45 46 49 55 65 73 80 92 101

•การหาคำ�า Maximum20 25 45 46 49 55 65 73 80 92 101

•หากข้�อม�ลไม�ได�จั�ดเร�ยงต�องใชุ�เวลา O(N) เพื่$�อหาคำ�า Max•แต�เม$�อข้�อม�ลจั�ดเร�ยงเร�ยบร�อยแล�วใชุ�เวลา O(1)

Page 6: Data Structure and  Algorithm

ASCENDING VS. DESCENDING ORDER

เราสามารถจั�ดเร�ยงข้�อม�ลได�ที่ กประเภที่ int, float, boolean, character, string ฯลฯ

ข้�อม�ลที่��จั�ดเร�ยงต�องม� Key ที่��ใชุ�เป+นต�วว�ดล�าด�บข้�อม�ลเชุ�น จั�านวน ว�นที่�� ชุ$�อ เป+นต�น

การจั�ดเร�ยงจัากน�อยไปหามาก (Ascending Order)เชุ�นเร�ยงต�วเลข้, ว�นที่��ในรายการสม ดบ�ญชุ�ธนาคำาร

การจั�ดเร�ยงมากไปหาน�อย (Descending Order) เชุ�น เร�ยง E-mail โดยเอาว�นที่��ล�าส ดข้/0นมาก�อน

6

Page 7: Data Structure and  Algorithm

ข้�อม�ลที่��ต�องการจั�ดเร�ยงน�0นม�อย��หลายร�ปแบบ เชุ�น ข้�อม�ลที่��อย��ใน Array, อย��ในไฟล2 , อย��ในฐานข้�อม�ล

ในว4ชุาน�0เราศึ/กษาถ/งร�ปแบบการเร�ยงล�าด�บข้�อม�ลใน Array เที่�าน�0น

7

Data Representation for Sorting

สมมต4ม�ข้�อม�ล 1 ชุ ด จั�านวน 6 ต�ว ด�งน�044 33 11 85 77 60

444433331111858577776060ข้�อม�ลใน Array ชุ$�อ List

ข้�อม�ลในอ ดมคำต4List

Page 8: Data Structure and  Algorithm

คัวามูหมูายคัวามูหมูาย การจั�ดัเร�ยงลำาดั�บ (Sorting) หมูายถึ�งการจั�ดัเร�ยงข้�อมู�ลำ

ให�เร�ยงลำาดั�บตามูเง.�อนไข้ที่��กาหนดัไว� (มูากไป็น�อย หร.อ น�อยไป็มูาก)

ในกรณ�ที่��ข้�อมู�ลำในแต&ลำะ Record มู�หลำาย Field เราต�องพ/จัารณาเลำ.อก Field ที่��สำนใจัเพ.�อใช่�ในการเร�ยงลำาดั�บ เช่&น การจั�ดัเร�ยงลำาดั�บป็ระว�ต/น�กศั�กษา อาจัใช่�หมูายเลำข้ป็ระจัาต�วข้องน�กศั�กษาเป็�น Field โดัยเร�ยงจัากน�อยไป็มูาก เป็�นต�น

8

Page 9: Data Structure and  Algorithm

ป็ระเภที่ข้องการเร�ยงป็ระเภที่ข้องการเร�ยงลำาดั�บข้�อมู�ลำลำาดั�บข้�อมู�ลำ การจั�ดเร�ยงภายใน การจั�ดเร�ยงภายใน (Internal Sorting)(Internal Sorting)

การจั�ดัเร�ยงลำาดั�บข้�อมู�ลำที่��เก2บอย�&ในหน&วยคัวามูจัาข้องเคัร.�องคัอมูพ/วเตอร) การจั�ดัเร�ยงแบบน��จัะต�องอาศั�ยเที่คัน/คัแลำะว/ธี�การข้องโคัรงสำร�างข้�อมู�ลำมูาช่&วย เช่&น การใช่� Array หร.อ Linked-List เข้�ามูาช่&วย

การจั�ดเร�ยงภายนอก การจั�ดเร�ยงภายนอก (External Sorting)(External Sorting)การจั�ดัเร�ยงข้�อมู�ลำที่��เก2บอย�&ในสำ.�อบ�นที่�กข้�อมู�ลำ เช่&น Disk

โดัยที่��วไป็การเร�ยงป็ระเภที่น�� มู�กใช่�ก�บข้�อมู�ลำที่��มู�จัานวนมูาก ที่��ไมู&สำามูารถึเก2บไว�ในหน&วยคัวามูจัาไดั�หมูดั การเร�ยงในแบบน��จัะต�องแบ&งข้�อมู�ลำออกเป็�นสำ&วนย&อย แลำ�วนามูาเร�ยงดั�วยการจั�ดัเร�ยงแบบภายในก&อน แลำ�วจั�งนาแต&ลำะสำ&วนย&อยมูารวมูก�น

9

Page 10: Data Structure and  Algorithm

ว/ธี�การจั�ดัเร�ยงข้�อมู�ลำว/ธี�การจั�ดัเร�ยงข้�อมู�ลำการจั�ดัเร�ยงแบบแลำกเป็ลำ��ยน (Exchange

Sort)การจั�ดัเร�ยงแบบแที่รก (Insertion Sort)การจั�ดัเร�ยงแบบเลำ.อก (Selection Sort)

Merg SortRedix SortHeap SortShell sortQuick Sort

10

Page 11: Data Structure and  Algorithm

การจั�ดัเร�ยงแบบแลำกเป็ลำ��ยน การจั�ดัเร�ยงแบบแลำกเป็ลำ��ยน (BUBBLE SORT)(BUBBLE SORT)

เป็�นการจั�ดัเร�ยงโดัยการเป็ร�ยบเที่�ยบคั&า 2 คั&าที่��ต/ดัก�น ที่าต&อเน.�องก�นไป็เร.�อย ๆ แลำะต�ดัสำ/นใจัว&าจัะสำลำ�บตาแหน&งก�นหร.อไมู&

เช่&น ถึ�าต�องการเร�ยงข้�อมู�ลำจัากน�อยไป็มูาก ก2คั.อ ข้�อมู�ลำที่��มู�คั&าน�อย ต�องอย�&ในตาแหน&งหน�า ข้�อมู�ลำที่��มู�คั&ามูาก จัะอย�&ตาแหน&งหลำ�ง ข้�อมู�ลำ 2 ต�วที่��อย�&ต/ดัก�น ถึ�า

ถึ�าข้�อมู�ลำต�วแรกมูากกว&าต�วหลำ�ง ก2จัะต�องสำลำ�บตาแหน&งก�น แต&ถึ�าข้�อมู�ลำต�วแรกน�อยกว&าข้�อมู�ลำต�วหลำ�ง ก2ไมู&ต�องสำลำ�บตาแหน&ง ที่าเช่&นน��ซ้ำ�าก�นไป็เร.�อย ๆ จันกว&าการเป็ร�ยบเที่�ยบข้องข้�อมู�ลำตลำอดัที่��งช่6ดัจัะไมู&ต�องมู�

การสำลำ�บตาแหน&งเลำย

11

Page 12: Data Structure and  Algorithm

BUBBLE SORT BUBBLE SORT เป็�นว/ธี�ที่��ง&ายเช่&นก�น แนวคั/ดั คั.อคั&าที่��มูากๆ จัะต�องถึ�กนาไป็ (ลำอยไป็ ) ไว�ดั�านที่�าย เหมู.อนลำ�กโป็7งที่��ข้นาดัใหญ&จัะลำอยไดั�เร2วแลำะสำ�ง แนวคั/ดั

เร/�มูนาข้�อมู�ลำต�วแรกเที่�ยบก�บต�วที่�� 2 ต�วไหนมูากก2จัะถึ�กสำลำ�บก�น ที่าอย&างน��ไป็จันถึ�งต�วสำ6ดัที่�าย เราจัะไดั�คั&าที่��มูากที่��สำ6ดั 1 ต�วไว�ดั�านที่�าย

แต&ลำะคัร��งจัะไดั�คั&ามูากที่��สำ6ดัไป็ไว�ที่�ายสำ6ดั จัากน��นเร/�มูการเป็ร�ยบเที่�ยบใหมู&ต��งแต&ต�วแรกถึ�งต�วที่�� N-1 จัากน��นเร/�มูการเป็ร�ยบเที่�ยบใหมู&ต��งแต&ต�วแรกถึ�งต�วที่�� N-2 … จัากน��นเร/�มูการเป็ร�ยบเที่�ยบใหมู&ต��งแต&ต�วแรกถึ�งต�วที่�� N-x ที่าจัน x = N-1

12

Page 13: Data Structure and  Algorithm

ต�วอย&าง ต�วอย&าง FUNCTIONFUNCTION การจั�ดัเร�ยงแบบ การจั�ดัเร�ยงแบบ BUBBLEBUBBLE

13

Page 14: Data Structure and  Algorithm

ต�วอย&าง : BUBBLE SORT

14

121242429 49 41 81 806066 76 7

รอบที่��รอบที่�� ข้�อม�ลข้�อม�ล1 06 44 55 12 42 94 186 72 06 12 44 55 18 42 946 73 06 12 18 44 55 42 67 944 06 12 18 42 44 55 67

945 06 12 18 42 44 55 67

946 06 12 18 42 44 55 67

947 06 12 18 42 44 55 67

9 4

55554444ข้�อม�ล ข้�อม�ล 8 8 ต�วที่�า ต�วที่�า 7 7 รอบรอบ

Page 15: Data Structure and  Algorithm

15

Program bublesort1;const n = 8; a:array[1..n] of integer = (44,55,12,42,94,18,06,67);VAR i,j,l,temp : integer;begin for i := 2 to n do begin for j := n downto i do if a[j-1] > a[j] then begin temp := a[j-1]; a[j-1] := a[j]; a[j] := temp; end; for l := 1 to n do write(a[l]:10); end; writeln;readln;end.

Page 16: Data Structure and  Algorithm

16

#include <iostream.h>#define ELEMENTS 8

void exchange_sort(int x[],int length){ int temp; for(int i=0;i<length;i++) { for (int j=length;j>i;j--) {

if(x[j-1]>x[j]) { temp=x[j-1]; x[j-1]=x[j]; x[j]=temp; }}

}}

int main(){ int A[ELEMENTS]={44,55,12,42,94,6,18,67}; int x;

cout<<"NON SORTED LIST:"<<endl; for(x=0;x<ELEMENTS;x++) { cout<<A[x]<<endl; } exchange_sort(A,ELEMENTS); cout<<endl<<"SORTED LIST"<<endl; for(x=1;x<=ELEMENTS;x++) { cout<<A[x]<<endl; } return 0;}

Page 17: Data Structure and  Algorithm

การจั�ดัเร�ยงแบบแที่รก การจั�ดัเร�ยงแบบแที่รก (INSERTION SORT)(INSERTION SORT)

เป็�นการจั�ดัเร�ยงโดัยการนาข้�อมู�ลำที่��จัะที่าการเร�ยงน��น ๆ ไป็จั�ดัเร�ยงที่�ลำะต�ว

โดัยการแที่รกต�วที่��จัะเร�ยงไว�ในตาแหน&งที่��เหมูาะสำมูข้องข้�อมู�ลำที่��มู�การจั�ดัเร�ยงเร�ยบร�อยแลำ�ว ณ ตาแหน&งที่��ถึ�กต�อง

ว/ธี�การลำ�กษณะน��จัะคัลำ�ายก�บการหย/บไพ&ข้��นมูาเร�ยงที่�ลำะใบ ซ้ำ��ง ไพ&ใบแรกจัะไมู&ต�องสำนใจัอะไร แต&เมู.�อหย/บไพ&ใบที่�� 2 ก2จัะต�องพ/จัารณาว&าจัะไว�ก&อนหร.อไว�หลำ�งใบแรก แลำะเช่&นเดั�ยวก�น เมู.�อหย/บไพ&ใบถึ�ดั ๆ มูา ก2จัะต�องพ/จัารณาว&าจัะวางใบ

ตาแหน&งใดัเพ.�อให�เก/ดัการเร�ยงลำาดั�บ จันกระที่��งหมูดั

17

Page 18: Data Structure and  Algorithm

ต�วอย&าง ต�วอย&าง FUNCTIONFUNCTION การเร�ยงแบบ การเร�ยงแบบ INSERTIONINSERTION

18

Page 19: Data Structure and  Algorithm

ต�วอย&าง : INSERTION SORT

19

รอบที่��รอบที่�� ข้�อม�ลข้�อม�ล2 44 55 12 42 9 4 18

06 6 73 12 44 55 42 9 4 18 06

6 74 12 42 44 55 94 18 066 75 12 42 44 55 9 4 18 06

6 76 12 18 42 44 55 94 06 677 06 12 18 42 44 55 94

678 06 12 18 42 44 55 67

9 4

121242429 49 41 81 806066 76 755554444ข้�อม�ล ข้�อม�ล 8 8 ต�วที่�า ต�วที่�า 7 7 รอบรอบ

Page 20: Data Structure and  Algorithm

20

Program insertionsort;const n = 8; a:array[1..n] of integer = (44,55,12,42,94,18,06,67);VAR i,j,l,x : integer;begin for i := 2 to n do begin x := a[i]; j := i-1; while (x < a[j]) and (j > 0) do begin a[j+1] := a[j]; j := j - 1; end; a[j+1] := x; for l := 1 to n do write(a[l]:10); end; writeln;readln;end.

Page 21: Data Structure and  Algorithm

21

#include <iostream.h> #define ELEMENTS 8 void insertion_sort(int x[],int length){ int key,i; for(int j=1;j<length;j++) { key=x[j]; i=j-1; while(x[i]>key && i>=0) { x[i+1]=x[i]; i--; } x[i+1]=key; }}

int main(){ int A[ELEMENTS]={44,55,12,42,94,06,18,67}; int x; cout<<"NON SORTED LIST:"<<endl; for(x=0;x<ELEMENTS;x++) { cout<<A[x]<<endl; } insertion_sort(A,ELEMENTS); cout<<endl<<"SORTED LIST"<<endl; for(x=0;x<ELEMENTS;x++) { cout<<A[x]<<endl; } return 0;}

Page 22: Data Structure and  Algorithm

การจั�ดัเร�ยงแบบเลำ.อก การจั�ดัเร�ยงแบบเลำ.อก (SELECTION (SELECTION SORT)SORT)

เป็�นการจั�ดัเร�ยงโดัยการเร/�มูต�นคั�นหาข้�อมู�ลำต�วที่��น�อยที่��สำ6ดัจัากข้�อมู�ลำที่��มู�อย�&ที่� �งหมูดั

แลำ�วเอามูาเก2บไว�ข้�างนอก แลำ�วกลำ�บไป็หาข้�อมู�ลำต�วที่��น�อยที่��สำ6ดัในกองต&อไป็จันกว&าจัะหมูดักอง

22

Page 23: Data Structure and  Algorithm

ต�วอย&าง ต�วอย&าง FUNCTIONFUNCTION การเร�ยงแบบ การเร�ยงแบบ SELECTIONSELECTION

23

Page 24: Data Structure and  Algorithm

ต�วอย&าง : SELECTION SORT

24

121242429 49 41 81 806066 76 7

รอบที่��รอบที่�� ข้�อม�ลข้�อม�ล1 06 55 12 42 9 4 18 44

6 72 06 12 55 42 9 4 18 44

6 73 06 12 18 42 94 55 44

6 74 06 12 18 42 9 4 55

44 6 75 06 12 18 42 44 55 94

676 06 12 18 42 44 55 94

677 06 12 18 42 44 55 67

9 4

55554444ข้�อม�ล ข้�อม�ล 8 8 ต�วที่�า ต�วที่�า 7 7 รอบรอบ

Page 25: Data Structure and  Algorithm

25

Program selectionsort;const n = 8; a:array[1..n] of integer = (44,55,12,42,94,18,06,67);VAR i,j,k,l,temp : integer;begin for i := 1 to n-1 do begin k := i; for j := i+1 to n do if a[k] >a[j] then k := j; temp := a[i]; a[i] := a[k]; a[k] := temp; for l := 1 to n do write(a[l]:10); end; writeln;readln;

end.

Page 26: Data Structure and  Algorithm

26

#include <iostream.h>

#define ELEMENTS 8

void selection_sort(int x[],int length){ int k,temp; for(int i=0;i<length;i++) { k=i; for (int j=i+1;j< length;j++) {

if(x[j]< x[k]) k=j;

} temp=x[i]; x[i]=x[k]; x[k]=temp; }}

int main(){ int A[ELEMENTS]={44,55,12,42,94,6,18,67}; int x;

cout<<"NON SORTED LIST:"<<endl; for(x=0;x<ELEMENTS;x++) { cout<<A[x]<<endl; } selection_sort(A,ELEMENTS); cout<<endl<<"SORTED LIST"<<endl; for(x=0;x< ELEMENTS;x++) { cout<<A[x]<<endl; } return 0;}

Page 27: Data Structure and  Algorithm

SHELLSORTSHELLSORTShellsort ต�0งตามชุ$�อข้องผ��คำ4ดคำ�นการจั�ดเร�ยง

แบบน�0 คำ$อ Donald Shell และเป+นอ�ลกอร4ที่/มแรกที่��ที่�าลายข้อบเข้ตเวลาที่��เป+น quadratic

ในข้ณะที่�างานแต�ละ phase น�0น shell sort ใชุ�การเปร�ยบเที่�ยบคำ�าที่��อย��ในต�าแหน�งที่��ห�างก�น ระยะห�างด�งกล�าวน�0จัะลดลงลงเร$�อย ๆ จันกระที่��งถ/งข้�0นตอนส ดที่�ายที่��เป+นการเปร�ยบเที่�ยบคำ�าที่��อย��ต4ดก�นด�วยเหต ที่��ระยะห�างข้องคำ�าที่��น�ามาเปร�ยบเที่�ยบ

ก�นลดลงในระหว�างการที่�างานข้องอ�ลกอร4ที่/มน�0เอง จั/งเร�ยกShellsort อ�กอย�างว�า diminishing increment sort

27

Page 28: Data Structure and  Algorithm

Shellsort ใชุ�การล�าด�บข้อง h1, h2, . . . ,

ht ซึ่/�งเร�ยกว�า increment sequence และล�าด�บที่��ใชุ�จัะม�คำ�าล�กษณะใดก9ได�เพื่�ยงแต�ม�เง$�อนไข้ว�า h1 = 1 เที่�าน�0น แต�แน�นอนว�าบางล�าด�บจัะที่�างานได�ด�กว�าบางล�าด�บ (จัะกล�าวถ/งอ�กคำร�0ง)

ในการที่�างานแต� phase ที่��ใชุ�ล�าด�บการเพื่4�ม hk ผลที่��ได� คำ$อ ส�าหร�บแต�ละคำ�า i เราจัะได�ว�า a[i] a[i + hk] กล�าวคำ$อสมาชุ$กที่ กต�วที่��ม�ระยะห�างก�น hk จัะอย��ในล�าด�บที่��ม�ก��จั�ดเร�ยงอย�างถ�กต�อง ซึ่/�งเร�ยกว�า hk-sorted file

28

Page 29: Data Structure and  Algorithm

คำ ณสมบ�ต4ที่��ส�าคำ�ญข้อง Shellsort คำ$อ การที่�า hk-sorted แล�วตามด�วย hk-1-

sorted น�0นย�งคำงสภาพื่ข้อง hk-sorted

29

Original 81 94 11 96 12 35 17 95 28 58 41 75 15--------------------------------------------------------------------------------------After 5-sort 35 17 11 28 12 41 75 15 96 58 81 94 95After 3-sort 28 12 11 35 15 41 58 17 94 75 81 96 95After 1-sort 11 12 15 17 28 35 41 58 75 81 94 95 96

Figure Shellsort หล�งการที่�างานแต�ละ pass

Page 30: Data Structure and  Algorithm

SHELLSORT ROUTINE ใช่�ลำาดั�บการเพ/�มูข้อง SHELL

public static void shellsort( Comparable [ ] a )

{

int j;

/* 1*/ for( int gap = a.length / 2; gap > 0; gap /= 2 )

/* 2*/ for( int i = gap; i < a.length; i++ )

{

/* 3*/ Comparable tmp = a[ i ];

/* 4*/ for( j = i; j >= gap &&

tmp.compareTo( a[ j - gap ] ) < 0; j -= gap )

/* 5*/ a[ j ] = a[ j - gap ];

/* 6*/ a[ j ] = tmp;

}

}30

Page 31: Data Structure and  Algorithm

HEAPSORHEAPSORTT

ในการจั�ดเร�ยงด�วยเวลา O(N log N) อ�ลกอร4ที่/มที่��ใชุ�พื่$0นฐานแนวคำ4ดน�0 เร�ยกว�า heapsort และม� Big-Oh running time ด�กว�าอ�ลกอร4ที่/มอ$�น ๆ ที่��กล�าวมาแล�ว

ว4ธ�การ คำ$อ สร�าง binary heap (ม�สมาชุ4ก N ต�ว) ซึ่/�งใชุ�เวลา O(N) จัากน�0นที่�า deleteMin N คำร�0ง สมาชุ4กที่��ถ�กย�ายออกไปจัาก heap ต�วแรก คำ$อต�วที่��ม�คำ�าน�อยที่��ส ด และเร�ยงล�าด�บตามคำ�าไป แล�วน�าไปเก9บใน Arrray อ�กต�วหน/�งจัากน�0นก9คำ�ดลอกกล�บไปย�ง Array เด4มซึ่/�งก9จัะเป+นคำ�าตอบในการจั�ดเร�ยง เน$�องจัากการที่�า deleteMin แต�ละต�วใชุ� O(log N) ด�งน�0น running time รวมที่�0งหมด คำ$อ O(N log N)

31

Page 32: Data Structure and  Algorithm

หล�งการที่�างานจันเสร9จั Array ที่��ได�ก9จัะเป+น Arrayข้องสมาชุ4กที่��จั�ดเร�ยงจัากมากไปน�อยถ�าต�องการจั�ดเร�ยงจัากน�อยไปมาก เราก9จัะใชุ� heap ที่�� parent ม�คำ�ามากกว�า child ข้องม�น น��นคำ$อ (max)heap

เราจัะใชุ� (max)heap ในการ implement ข้องเราและย�งคำงใชุ� Array เชุ�นเด4มข้�0นแรกสร�าง heap ด�วย linear time จัากน�0น

ที่�า deleteMaxes จั�านวน N - 1 คำร�0ง ด�วยการสล�บสมาชุ4กต�วส ดที่�ายใน heap ก�บสมาชุ4กต�วแรก แล�วลดข้นาดข้อง heap ลงแล�วที่�าการ percolating down

หล�งจับอ�ลกอร4ที่/มจัะได� Arrayที่��ม�สมาชุ4กเร�ยงตามล�าด�บคำ�า

32

Page 33: Data Structure and  Algorithm

FIGURE 7.6 (MAX) HEAP หลำ�งการ BUILD_HEAP

Figure 7.7 Heap หล�ง deleteMax คำร�0งแรก

33

Page 34: Data Structure and  Algorithm

QUICK SORTQUICK SORT

หล�กการด�าเน4นงาน * หาตาแหน&งในการแยกลำ/สำต) * แบ&งแยกข้�อมู�ลำออกเป็�นสำองสำ&วน แลำะหา

ตาแหน&ง ในการแยกลำ/สำต)

* ที่าจันกว&าข้�อมู�ลำจัะเร�ยงลำาดั�บเร�ยบร�อย34

Page 35: Data Structure and  Algorithm

35

15 9 7 16 31 2 20 25 17 12

15 9 7 16 31 2 20 25 17 12

เร/�มูต�นใช่�ข้�อมู�ลำต�วแรกเป็�นต�วเป็ร�ยบเที่�ยบ (pivot)

first last

ที่าการเป็ร�ยบเที่�ยบคั&าข้องข้�อมู�ลำที่��ช่��โดัย first ก�บPivot ถึ�าน�อยกว&า pivot ให�ที่าการเลำ.�อน firstไป็ย�งข้�อมู�ลำต&อไป็แลำะเป็ร�ยบเที่�ยบไป็จันกว&าจัะพบแลำ�วจั�งหย6ดัการเป็ร�ยบเที่�ยบ

Ex

pivot

Page 36: Data Structure and  Algorithm

36

เมู.�อพบตาแหน&งแลำ�ว จัะห�นมูาพ/จัารณาที่�� last ช่��อย�&หากคั&าที่�� last ช่��อย�&มู�คั&าน�อยกว&าที่�� first ช่��อย�&ให�สำลำ�บตาแหน&ง

15 9 7 16 31 2 20 25 17 12

first last

15 9 7 12 31 2 20 25 17 16

first last

Page 37: Data Structure and  Algorithm

37

ที่าการเป็ร�ยบเที่�ยบคั&าข้องข้�อมู�ลำที่��ช่��โดัย first ก�บPivot ถึ�าน�อยกว&า pivot ให�ที่าการเลำ.�อน firstไป็ย�งข้�อมู�ลำต&อไป็แลำะเป็ร�ยบเที่�ยบไป็จันกว&าจัะพบแลำ�วจั�งหย6ดัการเป็ร�ยบเที่�ยบ

15 9 7 12 31 2 20 25 17 16

first last

จัากชุ ดข้�อม�ลหล�งจัากการสล�บคำ�า

Page 38: Data Structure and  Algorithm

38

15 9 7 12 31 2 20 25 17 16

first last

เมู.�อพบตาแหน&งแลำ�ว จัะห�นมูาพ/จัารณาที่�� last ช่��อย�&หากคั&าที่�� last ช่��อย�&มู�คั&าน�อยกว&าที่�� first ช่��อย�&ให�สำลำ�บตาแหน&ง

15 9 7 12 16 2 20 25 17 31

first last

Page 39: Data Structure and  Algorithm

39

สำลำ�บตาแหน&งข้�อมู�ลำ

ย�อนกระบวนการไป็พ/จัารณา first แลำะ last จัะไดั�

15 9 7 12 2 16 20 25 17 31

first last

15 9 7 12 16 2 20 25 17 31

first last

Page 40: Data Structure and  Algorithm

40

ย�อนกระบวนการไป็พ/จัารณา first แลำะ last จัะไดั�15 9 7 12 2 16 20 25 17 31

firstlast

พื่บต�าแหน�งที่��จัะใชุ�แบ�งชุ ดข้�อม�ลแล�ว จั/งที่�าการแบ�งข้�อม�ลออกเป+นสองชุ ด

Page 41: Data Structure and  Algorithm

ที่าการแบ&งข้�อมู�ลำออกเป็�นสำองช่6ดั

41

15 9 7 12 2 16 20 25 17 31

2 9 7 12 15

สล�บคำ�าข้�อม�ลต�วแรกก�บส ดที่�ายข้องข้�อม�ลชุ ดซึ่�ายจัะได�ว�า 15 และ 16 อย��ในต�าแหน�งที่��ถ�กต�อง(ตน.5และ ตน.6) เร�ยบร�อยแล�วไมู&ต�องนามูาพ/จัารณาอ�กด�าเน4นการก�บข้�อม�ลที่��เหล$อเหม$อนเด4มจันกว�าจัะได�ข้�อม�ลในต�าแหน�งต�างๆ จันคำรบ และด�าเน4นการแบบเด�ยวก�บก�บข้�อม�ลชุ ดข้วาม$อ

16 20 25 17 31

Page 42: Data Structure and  Algorithm

42

20 25 17 312 9 7 12

ข้�อม�ลเร4�มต�นชุ ดซึ่�าย

ข้�อม�ลเร4�มต�นชุ ดข้วา

first lastpivotfirst last

พื่4จัารณาชุ ดข้�อม�ลด�านซึ่�ายม$อก�อน

Page 43: Data Structure and  Algorithm

7 9 1243

2 9 7 12

first lastpivot

• First มูากกว&า pivot พ/จัารณา last เลำ.�อนมูาดั�านซ้ำ�ายจันพบ 7 ซ้ำ��งน�อยกว&า

9 จั�งหย6ดั ที่าการสำลำ�บตาแหน&งข้�อมู�ลำ • First มูากกว&า pivot พ/จัารณา last เลำ.�อนมูาดั�านซ้ำ�ายจันมูาช่��ที่�� pivot พบว&าไมู&มู�ข้�อมู�ลำใดัต&อไป็อ�ก ที่าการแบ&งข้�อมู�ลำออกเป็�นสำองช่6ดัแสำดังว&า pivot อย�&ในตาแหน&งที่��ถึ�กต�องแลำ�ว 2( อย�& ตน 1. )

2 7 9 12

first lastpivot

2 7 9 12

firstlastpivot

2

Page 44: Data Structure and  Algorithm

44

7 9 12

first lastpivot

เป็ร�ยบเที่�ยบ first ก�บ pivot พบว&า first มูากกว&า พ/จัารณา last พบว&ามูากกว&า first จั�งเลำ.�อนมูาดั�านซ้ำ�ายจันมูาช่��ที่�� pivot แลำะไมู&มู�ต�วอ.�นอ�กจัะไดั�ตาแหน&งในการแยก list

7 9 12

firstlastpivot

Page 45: Data Structure and  Algorithm

45

9 12

first lastpivot

สำร6ป็ตาแหน&งข้�อมู�ลำที่��ที่ราบแลำ�วคั.อตาแหน&งที่�� 1 ถึ�ง 5 ไดั�แก& 2

7 9 12 แลำะ 15 ตามูลำาดั�บด�าเน4นการก�บข้�อม�ลชุ ดด�านข้วาม$อต�อ

ไดั�ว&า pivot (7) อย�&ในตาแหน&งที่��ถึ�กต�องแลำ�ว

9 12

firstlastpivot

Page 46: Data Structure and  Algorithm

MERGE SORTMERGE SORT

46

15 6 21 19 16 7 10 30

15 6 21 19 16 7 10 30

15 6 21 19 16 7 10 30

15 6 21 19 16 7 10 30

กระบวนการแยกชุ ดข้�อม�ล

Page 47: Data Structure and  Algorithm

47

15 6 21 19 16 7 10 30

6 15 19 21 7 16 10 30

6 15 19 21 7 10 16 30

6 7 10 15 16 19 21 30

กระบวนการรวมชุ ดข้�อม�ล

ได�ชุ ดข้�อม�ลที่��เร�ยงล�าด�บเร�ยบร�อยแล�ว

Page 48: Data Structure and  Algorithm

MERGE SORT ALGORITHM MERGE SORT ALGORITHM ANALYSISANALYSIS

จั�านวนคำร�0งข้องการเปร�ยบเที่�ยบที่�0งหมด= ผลบวกที่ กระด�บข้อง ( จั�านวนล4สต2ในแต�ละระด�บ * จั�านวนคำร�0งข้องการเปร�ยบเที่�ยบแต�ละล4สต2 )

= (N-1) *1 + (N/2 -1)*2 + (N/4 – 1)*4 +..+(2-1)*N/2

= ( N-1) + (N-2)+(N-4)+..+(N-N/2)

= Nlog2N จัะได� bigO(Nlog2N)48

Page 49: Data Structure and  Algorithm

ว/ธี�การจั�ดัเร�ยงข้�อมู�ลำว/ธี�การจั�ดัเร�ยงข้�อมู�ลำการจั�ดัเร�ยงแบบแลำกเป็ลำ��ยน (Exchange

Sort)การจั�ดัเร�ยงแบบแที่รก (Insertion Sort)การจั�ดัเร�ยงแบบเลำ.อก (Selection Sort)

Merg SortRedix SortHeap SortShell sortQuick Sort

49