data structure and algorithm

Post on 11-Jan-2016

39 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

DATA STRUCTURE AND DATA STRUCTURE AND ALGORITHM ALGORITHM

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

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

2

Sorting

การคำ�านวณ

การแสดงผล

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

3

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

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

4

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

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

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)

ASCENDING VS. DESCENDING ORDER

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

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

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

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

6

ข้�อม�ลที่��ต�องการจั�ดเร�ยงน�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

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

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

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

8

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

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

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

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

9

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

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

Merg SortRedix SortHeap SortShell sortQuick Sort

10

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

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

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

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

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

11

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

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

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

12

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

13

ต�วอย&าง : 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 รอบรอบ

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.

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;}

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

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

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

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

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

17

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

18

ต�วอย&าง : 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 รอบรอบ

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.

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;}

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

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

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

22

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

23

ต�วอย&าง : 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 รอบรอบ

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.

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;}

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

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

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

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

27

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

คำ ณสมบ�ต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

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

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

หล�งการที่�างานจันเสร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

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

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

33

QUICK SORTQUICK SORT

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

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

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

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

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

37

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

15 9 7 12 31 2 20 25 17 16

first last

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

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

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

40

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

firstlast

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

ที่าการแบ&งข้�อมู�ลำออกเป็�นสำองช่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

42

20 25 17 312 9 7 12

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

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

first lastpivotfirst last

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

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

44

7 9 12

first lastpivot

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

7 9 12

firstlastpivot

45

9 12

first lastpivot

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

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

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

9 12

firstlastpivot

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

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

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

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

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

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

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

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

Merg SortRedix SortHeap SortShell sortQuick Sort

49

top related