Uploaded by Vu Phung

AssignmentCTDLVAGT

advertisement
Assignment 01: CÁC GIẢI THUẬT SẮP XẾP
Nhóm 09: Phùng Anh Vũ – 2254810217
Lê Ngọc Tú Uyên -2254810205
Dương Huỳnh Minh Thông – 2254810239
BÀI 01:
*Mảng thứ nhất :
12
4
44
11
30
5
1a) Insertion sort
B01: current=1,walker=0,hold =4
4<12: swap(4,12)

4
12
44
11
30
5

4
12
44
11
30
5
4
12
11
44
30
B02: c =2,w=1,h=44
44>12: no swap
B03: c=3,w=2,h=11
11<44: swap(11,44)

5
c=3,w=1,h=11
11<12: swap(11,12)

4
11
12
44
30
11
12
44
30
5
c=3,w=0,h=11
11>4: no swap
B04: c=4,w=3,h=30

4
5

30<44: swap(30,44)
4
11
12
30
44
5
c=4,w=2,h=30
30>12: no swap

4
11
12
30
44
5

4
11
12
30
5
44

4
11
12
5
30
44

4
11
5
12
30
44
4
5
11
12
30
44
4
5
11
12
30
44
B05: c=5,w=4,h=5
5<44: swap(5,44)
c=5,w=3,h=5
5<30: swap(5,30)
c=5,w=2,h=5
5<12: swap(5,12)
c=5,w=1,h=5
5<11: swap(5,11) 
c=5,w=0,h=5
5>4: no swap

End Insertionsort
1b) Selection sort
B01: current=0,walker=1,smallest=12
w=1->5: min=4
4<12: exchance(12,4) 
4
12
44
11
30
5
4
5
44
11
30
12
B02: c=1,w=2,smallest=12
w=2->5: min =5
5<12: exchance(12,5) 
B03: c=2,w=3,smallest=44
w=3->5: min=11
11<44: exchance (44,11) 
4
5
11
44
30
12
4
5
11
12
30
44
5
11
12
30
44
5
11
12
30
44
B04: c=3,w=4,smallest=44
w=4->5: min=12
12<44 exchance (44,12) 
B05 : c=4,w=5,smallest=30
w=5: min=30
No exchance 
4
B06: c=5 smallest =44
No exchance 
4
END Selectionsort
12
4
44 11 30
5
1c) Buble sort
Pass01:
c=0,w=5
5<30: swap(30,5)->s=F
12 4 44 11 5 30
c=0,w=4
5<11:swap(11,5)->s=F
12 4 44 5 11 30
c=0,w=3
5<44:swap(44,5)->s=F
12 4 5 44 11 30
c=0,w=2
5>4:no swap->s=T
12 4 5 44 11 30
c=0,w=1
4<12:swap(12,4)->s=F
4 12 5 44 11 30
c=0,w=0,s=F
Pass02:
c=1,w=5
30>11:no swap->s=T
4 12 5 44 11 30
c=1,w=4
11<44:swap(44,11)>s=F
4 12 5 11 44 30
c=1,w=3
11>5:no swap->s=T
4 12 5 11 44 30
c=1,w=2
5<12:swap(12,5)->s=F
4 5 12 11 44 30
c=1,w=1,s=F
Pass05:
c=4,w=5
no swap
c=4,w=4,s=T
4 5 11 12 30 44
Pass06:
c=5,w=5,s=T
no swap
4 5 11 12 30 44
Pass03:
c=2,w=5
30<44:swap(44,30)>s=F
4 5 12 11 30 44
c=2,w=4
30>11:no swap->s=T
4 5 12 11 30 44
c=2,w=3
11<12:swap(12,11)>s=F
4 5 11 12 30 44
c=2,w=2,s=F
End Bublesort.
1d) Mergesort
0
1
2
3
4
5
12
4
44
11
30
5
Left
Mid
Right
Pass04:
c=3,w=5
no swap
c=3,w=4
no swap
c=3,w=3,s=T
4 5 11 12 30 44
B01: MergeSort(a,0,5)
//Chia mảng thành hai mảng Con
0<5  Mid =(0+5)/2=2
B02: mergeSort(a,0,2)
// Sắp xếp mảng con thứ nhất
0<2  Mid=(0+2)/2=1
:
12
4
44
mergeSort(a,0,1)
0<1  Mid=(0+1)/2=0
12
:
mergeSort(a,0,0)
0=0  Return :
12
mergeSort(a,1,1)
1=1  Return :
merge(a,0,0,1) 
4
4
12
mergeSort(a,2,2)
44
2=2  Return :
merge(a,0,1,2) 
4
12
44
4
B03: mergeSort(a,3,5) //Sắp xếp mảng con thứ 2
3<5  Mid=(3+5)/2 =4 :
11
30
11
30
5
mergeSort(a,3,4)
3<4  Mid=(3+4)/2=3 :
mergeSort(a,3,3)
11
3=3  Return :
mergeSort(a,4,4)
30
4=4  Return :
merge(a,3,3,4) 
11
30
mergeSort(a,5,5)
5=5 Return 
merge(a,3,4,5) 
5
5
11
30
B04: merge(a,0,3,5) // Hợp hai mảng con lại ta có được chuỗi cha đã được sắp xếp

4
5
11
12
30
44
*Mảng thứ hai :
08
41
03
01
09
15
09
15
1a) INSERTION SORT
B01: current=1, walked=0, hold=41
41>08: noswap
08
41
03
01
B02:
current=2, walked=1, hold=3
3<41: swap(3,41)
08
03
41
01
09
15
01
09
15
41
09
15
41
09
15
41
09
15
09
41
15
current=2, walked=0, hold=3
3<8: swap(3,8)
03
08
41
B03:
current=3, walked=2, hold=1
1<41: swap(1,41)
03
08
01
current=3, walked=1, hold=1
1<8: swap(1,8)
03
01
08
current=3, walked=0, hold=1
1<3: swap(1,3)
01
03
08
B04:
current=4, walked=3, hold=9
9<41: swap(9,41)
01
03
08
current=4, walked=2, hold=9
9>8: noswap
01
03
08
09
41
15
09
41
15
09
41
15
15
41
15
41
15
41
15
41
15
41
current=4, walked=1, hold=9
9>3: noswap
01
03
08
current=4, walked=0, hold=9
9>1: noswap
01
03
08
B05:
current=5, waldked=4, hold=15
15<41: swap(15,41)
01
03
08
09
current=5, waldked=3, hold=15
15>9: noswap
01
03
08
09
current=5, waldked=2, hold=15
15>8: noswap
01
03
08
09
current=5, waldked=1, hold=15
15>3: noswap
01
03
08
09
current=5, waldked=0, hold=15
15>1: noswap
01
03
08
End Insertion Sort
1b)SELECTION SORT
09
B01:
current=0, walked=1, smallest=8
walked=1 -> 5: min= 1
1<8: swap(1,8)
01
41
03
08
09
15
09
15
09
15
41
15
41
15
B02:
current=1, walked=2, smallest=3
walked=2 -> 5: min= 8
3<8: no swap
01
03
41
08
B03:
current=2, walked=3, smallest=41
walked=3 -> 5: min= 8
8<41: swap(8,41)
01
03
08
41
B04:
current=3, walked=4, smallest=41
walked=3 -> 5: min= 9
9<41: swap(9,41)
01
03
08
09
B05:
current=4, walked=4, smallest=41
walked=3 -> 5: min= 15
15<41: swap(15,41)
01
03
08
09
End Selection Sort
BUBBLE SORT
Pass 01:
c=0, w=5, s=T, no swap
0
4
0
0
8
41 3
1
9
c=0, w=4, s=T, no swap
0
4
0
0
8
41 3
1
9
c=0, w=3,
3>1: swap(3,1) -> s=F
0
4
0
0
8
41 1
3
9
c=0, w=2,
41>1: swap(41,1) -> s=F
0
0
4
0
8
1
41 3
9
c=0, w=1,
8>1: swap(8,1) -> s=F
0
0
4
0
1
8
41 3
9
c=0, w=0, s=F
0
15
0
15
0
15
0
15
0
15
Pass 04:
c=3, w=5,
41>15: swap(15,41) -> s=F
0
0
0
0
1
1
3
8
9
15 41
c=3, w=4, s=T, no swap
0
0
0
0
1
1
3
8
9
15 41
c=3, w=3,=T
1d) Mergesort
Pass 02:
c=1, w=5, s=T, no swap
1
0
0
4
0
1
8
41 3
9
c=1, w=4, s=T, no swap
1
0
0
4
0
1
8
41 3
9
c=1, w=3,
41>3: swap(3,41) -> s=F
1
0
0
0
4
1
8
3
41 9
c=1, w=2,
8>3: swap(3,8) -> s=F
1
0
0
0
4
1
3
8
41 9
c=1, w=1, s=F
0
15
0
15
0
15
0
15
1
1
Pass 05:
c=4, w=5, s=T, no swap
0
0
0
0
4 1
3
8
9
15
c=4, w=4, s=T, no swap
1
41
4
0
1
2
3
4
5
8
41
3
1
9
15
Left
Pass 03:
c=2, w=5, s=T, no swap
1
0
0
0
4
0
1
3
8
41 9
15
c=2, w=4,
141>9: swap(9,41) -> s=F
0
0
0
0
4
1
3
8
9
41 15
c=2, w=3, s=T, no swap
1
0
0
0
0
4
1
3
8
9
41 15
c=2, w=2, s=F
Mid
Right
Pass 06:
c=5, w=5, s=T, no swap
4end BubleSort
1
1
1
B01: MergeSort(a,0,5)
//Chia mảng thành hai mảng Con
0<5  Mid =(0+5)/2=2
B02: mergeSort(a,0,2)
// Sắp xếp mảng con thứ nhất
0<2  Mid=(0+2)/2=1
:
8
41
3
mergeSort(a,0,1)
0<1  Mid=(0+1)/2=0
8
:
41
mergeSort(a,0,0)
0=0  Return :
8
mergeSort(a,1,1)
1=1  Return :
merge(a,0,0,1) 
41
8
41
mergeSort(a,2,2)
3
2=2  Return :
merge(a,0,1,2) 
3
8
41
B03: mergeSort(a,3,5) //Sắp xếp mảng con thứ 2
3<5  Mid=(3+5)/2 =4 :
mergeSort(a,3,4)
1
9
15
3<4  Mid=(3+4)/2=3 :
1
9
mergeSort(a,3,3)
1
3=3  Return :
mergeSort(a,4,4)
9
4=4  Return :
merge(a,3,3,4) 
1
9
mergeSort(a,5,5)
5=5 Return 
merge(a,3,4,5) 
15
1
9
15
B04: merge(a,0,3,5) // Hợp hai mảng con lại ta có được chuỗi cha đã được sắp xếp

1
3
8
9
15
41
*Mảng thứ ba:
07
02
01
18
10
04
18
10
04
B01:
C=1 ,W =0,hold=02
02<07,ex(02,07)
02
07
01
B02:
C=2 ,W=1 ,hold=01
01<07 ,ex(01,07)
02
01
07
18
10
04
07
18
10
04
18
10
04
18
10
04
18
10
04
10
18
04
C=2 ,W=0,hold=01
01<02,ex(01,02)
01
02
B03
C=3 ,W=2 ,hold=18
18>07 , no ex
01
02
07
C=3 ,W=1 ,hold=18
18>02 , no ex
01
02
07
C=3 ,W=2 ,hold=18
18>01 , no ex
01
02
07
B04
C=4 ,W=3 ,hold=10
10<18 ,ex(10,18)
01
02
07
C=4 ,W=2 ,hold=10
10>07 ,no ex
01
02
07
10
18
04
10
18
04
10
18
04
10
04
18
04
10
18
07
10
18
C=4 ,W=1 ,hold=10
10>02 ,no ex
01
02
07
C=4 ,W=0 ,hold=10
10>01 ,no ex
01
02
07
B05:
C=5 ,W=4 ,hold=04
04<18 ,ex(04,18)
01
02
07
C=5 ,W=3 ,hold=04
04<10 ,ex(04,10)
01
02
07
C=5 ,W=2 ,hold=04
04<07 ,ex(04,07)
01
02
04
C=5 ,W=1 ,hold=04
04>02 ,no ex
01
02
04
07
10
18
07
10
18
18
10
04
18
10
04
C=5 ,W=1 ,hold=04
04>01 ,no ex
01
02
04
End Insertion sort
1b) Selection sort
B01:
C=0 ,W=1 ,Smallest=07
W=1->5 ,Min=01
01<07 ,ex(01,07)
01
02
07
B02:
C=1 ,W=2 ,Smallest=02
W=2->5 ,Min=04
04>02 ,no ex
01
02
07
B03
C=2 ,W=3 ,Smallest=07
W=3->5 ,Min=04
04<07 ,ex(04,07)
01
02
04
18
10
07
07
10
18
04
07
10
18
04
07
10
18
B04
C=3 ,W=4 ,Smallest=18
W=4->5 ,Min=07
07<18 ,ex(07,18)
01
02
04
B05
C=4 ,W=5 ,Smallest=10
W=5 ,Min=18
18>10, no ex
01
02
B06 :
C=5 ,Smallest=18
No ex
01
02
End SelectionSort
1c) Bubble sort
Pass 1
C=0 ,W=5
04<10 ,Sort=F ,ex(04,10)
7
0
2
0
1
0
8
1
4
Pass2
C=1 ,W=5
10<18 ,Sort=F ,ex(10,18)
0
0
C=0 ,W=4
04<18 ,Sort=F ,ex(04,18)
7
0
2
0
1
0
4
0
8
1
1
1
0
0
2
0
4
0
4
0
0
1
8
C=2 ,W=3
04<07,Sort=F,ex(04,07)
1
C=1,W=2
02<07,Sort=F,ex(02,07)
0
8
1
C=2 ,W=4
10>4,Sort=T,no ex
1
C=1 ,W=3
04>02 ,Sort=T,no ex
C=0 ,W=2
01<02 ,Sort=F , ex(01,02)
0
1
0
2
C=1 ,W=4
10>04 ,Sort=T ,no ex
C=0 ,W=3
04>01 ,Sort=T,no ex
7
0
7
Pass3
C=2,W=5
18>10,Sort =T,no ex
1
0
2
1
0
1
C=1,W=1
Sort=F, no ex
1
0
1
0
7
0
4
0
2
0
4
0
7
0
0
1
8
1
0
0
1
8
1
C=2,W=2,Sort=F,no ex
0
0
1
8
1
C=0 ,W=1
01<07 ,Sort=F ,ex(01,07)
1
0
7
0
2
0
4
0
8
C=0,W=0,Sort=f
Pass4
C=3,W=5
18>10,Sort=T,no ex
Pass5
C=4,W=5
18>10,Sort=T,no ex
C=3,W=4
10>07,Sort=T,no ex
C=4,W=4
Sort=F,no ex
C=3,W=3
04>02,Sort=T,no ex
Pass6
C=5,W=5
Sort=T,no ex
1
0
2
0
4
0
7
End BubbleSort
1d) Merge sort
1d) Mergesort
0
1
2
3
4
5
7
2
1
18
10
4
Left
B01: MergeSort(a,0,5)
Mid
Right
//Chia mảng thành hai mảng Con
0<5  Mid =(0+5)/2=2
B02: mergeSort(a,0,2)
// Sắp xếp mảng con thứ nhất
0<2  Mid=(0+2)/2=1
:
7
2
1
mergeSort(a,0,1)
0<1  Mid=(0+1)/2=0
7
:
2
mergeSort(a,0,0)
0=0  Return :
7
mergeSort(a,1,1)
1=1  Return :
merge(a,0,0,1) 
2
7
2
mergeSort(a,2,2)
1
2=2  Return :
merge(a,0,1,2) 
1
2
7
B03: mergeSort(a,3,5) //Sắp xếp mảng con thứ 2
3<5  Mid=(3+5)/2 =4 :
18
10
4
mergeSort(a,3,4)
18
3<4  Mid=(3+4)/2=3 :
10
mergeSort(a,3,3)
18
3=3  Return :
mergeSort(a,4,4)
10
4=4  Return :
merge(a,3,3,4) 
10
18
mergeSort(a,5,5)
5=5 Return 
merge(a,3,4,5) 
4
4
10
18
B04: merge(a,0,3,5) // Hợp hai mảng con lại ta có được chuỗi cha đã được sắp xếp

1
2
4
7
10
18
*Mảng thứ tư:
19
16
64
06
05
22
64
06
05
22
1a)Insertionsort
B01:
C=1,W=0,hold=16
16<19,swap(16,19)
16
19
B02:
C=2,W=1,hold=64
64>19,no swap
C=2,W=0,hold=64
19>16,noswap
B03:
C=3,W=2,hold=06
06<64,swap(06,64)
16
19
06
64
05
22
19
64
05
22
19
64
05
22
19
05
64
22
C=3,W=1,hold=06
06<19,swap(06,19
16
06
C=3,W=1,hold=06
06<16,swap(06,16)
06
16
B04:
C=4,W=3,hold=05
05<64,swap(05,64)
06
16
C=4,W=2,hold=05
05<10,swap(05,19)
06
16
05
19
64
22
16
19
64
22
16
19
64
22
16
19
22
64
C=4,W=1,hold=05
05<16,swap(05,16)
06
05
C=4,W=0,hold=05
05<06,swap(05,06)
05
06
B05:
C=5,W=4,hold=22
22<64,swap(22,64)
05
06
C=5,W=3,hold=22
no swap
C=5,W=2,hold=22
no swap
C=5,W=1,hold=22
no swap
C=5,W=0,hold=22
no swap
05
06
16
19
22
64
End Insertionsort
1b) Selectionsort
B01:
current=0, walked=1, smallest=19
walked=1->5: min=5
5<19: swap(5,19)
05
16
64
06
19
22
19
22
19
22
B02:
current=1, walked=2, smallest=16
walked=1->5: min=6
6<19: swap(6,16)
05
06
64
16
B03:
current=2, walked=3, smallest=64
walked=1->5: min=16
16<64: swap(16,64)
05
B04:
06
16
64
current=3, walked=3, smallest=64
walked=1->5: min=19
19<64: swap(19,64)
05
06
16
19
64
22
22
64
B05:
current=4, walked=5, smallest=64
walked=1->5: min=22
22<64: swap(22,64)
05
06
End SelectionSort
16
19
1c) Bubble sort
Pass 01:
c=0, w=5, s=T, no swap
1
1
6
0
19 16 64 6 5
c=0, w=4,
6>5: swap(5,6) -> s=F
1
1
6
0
19 16 64 5 6
c=0, w=3,
64>5: swap(5,64) -> s=F
1
1
0 6
19 16 5 64 6
c=0, w=2,
16>5: swap(5,16) -> s=F
1
0 1
6
19 5 16 64 6
c=0, w=1,
19>5: swap(5,19) -> s=F
0 1
1
6
5 19 16 64 6
c=0, w=0, s=F
Pass 04:
c=3, w=5, s=T, no swap
0 0 1
1
5 6 16 19 22
c=3, w=4, s=T, no swap
0 0 1
1
5 6 16 19 22
c=3, w=3, s=T
0
22
0
22
0
22
0
22
0
22
2
64
2
64
Pass 02:
c=1, w=5, s=T, no swap
2
0 1
1
6
0
5 19 16 64 6 22
c=1, w=4
64>6: swap(6,64) -> s=F
2
0 1
1
0 6
5 19 16 6 64 22
c=1, w=3
16>06: swap(6,16) -> s=F
2
0 1
0 1
6
5 19 6 16 64 22
c=1, w=2
19>06: swap(6,19) -> s=F
2
0 0 1
1
6
5 6 19 16 64 22
c=1, w=1, s=F
Pass 05:
c=4, w=5, s=T, no swap
6
0 0 1
1
5 6 16 19 22
c=4, w=4, s=T
2
64
6
0
1
2
3
4
5
19
16
64
6
5
22
Left
B01: MergeSort(a,0,5)
2c=2, w=4, s=T, no swap
0 0 1
1
2
5 6 19 16 22 64
c=2, w=3
219>16: swap(16,19) -> s=F
0 0 1
1
2
5 6 16 19 22 64
2c=2, w=3, s=T, no swap
0 0 1
1
5 6 16 19 22
c=2, w=2, s=F
2
1d) Merge sort
1d) Mergesort
Pass 03:
c=2, w=5
264>22: swap(22,64) -> s=F
0 0 1
1
2
5 6 19 16 22 64
Mid
Right
//Chia mảng thành hai mảng Con
Pass 06:
c=5, w=5, s=T, no swap
6
End BubbleSort
2
64
6
6
6
6
0<5  Mid =(0+5)/2=2
B02: mergeSort(a,0,2)
// Sắp xếp mảng con thứ nhất
0<2  Mid=(0+2)/2=1
:
19
16
64
mergeSort(a,0,1)
0<1  Mid=(0+1)/2=0
19
:
16
mergeSort(a,0,0)
0=0  Return :
19
mergeSort(a,1,1)
1=1  Return :
merge(a,0,0,1) 
16
16
19
mergeSort(a,2,2)
64
2=2  Return :
merge(a,0,1,2) 
16
19
64
B03: mergeSort(a,3,5) //Sắp xếp mảng con thứ 2
3<5  Mid=(3+5)/2 =4 :
6
5
22
mergeSort(a,3,4)
3<4  Mid=(3+4)/2=3 :
mergeSort(a,3,3)
3=3  Return :
6
6
5
mergeSort(a,4,4)
4=4  Return :
merge(a,3,3,4) 
5
5
6
mergeSort(a,5,5)
5=5 Return 
merge(a,3,4,5) 
22
5
6
22
B04: merge(a,0,3,5) // Hợp hai mảng con lại ta có được chuỗi cha đã được sắp xếp

5
6
16
19
22
64
BÀI 2:
1.Insertion Sort:
Ưu điểm:
 Đơn giản để hiểu và cài đặt
 Hiệu suất tốt với các mảng nhỏ hoặc gần như đã được sắp xếp.
 Có thể sắp xếp trong chỗ (in-place) và không cần bộ nhớ phụ.
Khuyết điểm:
 Hiệu suất kém với các mảng lớn với số lượng phần tử lớn.
 Có độ phức tạp trung bình là O(n^2).
2.Selection Sort:
Ưu điểm:
 Đơn giản để hiểu và cài đặt.
 Hiệu suất tốt với các mảng nhỏ hoặc gần như đã được sắp xếp.
 Có thể sắp xếp trong chỗ (in-place) và không cần bộ nhớ phụ.
Khuyết điểm:
 Hiệu suất kém với các mảng lớn với số lượng phần tử lớn.
 Có độ phức tạp trung bình là O(n^2).
3.Bubble Sort:
Ưu điểm:
 Đơn giản để hiểu và cài đặt.
 Dễ dàng sắp xếp các dãy gần như đã được sắp xếp.
Khuyết điểm:
 Hiệu suất kém với các mảng lớn với số lượng phần tử lớn.
 Có độ phức tạp trung bình là O(n^2).
 Không hiệu quả với các tập dữ liệu lớn và phức tạp.
4.Merge Sort:
Ưu điểm:
 Hiệu suất tốt với các mảng lớn với số lượng phần tử lớn.
 Độ phức tạp trung bình là O(n log n), hiệu quả hơn các thuật toán trên.
 Đảm bảo sắp xếp ổn định.
Khuyết điểm:
 Yêu cầu bộ nhớ phụ để lưu trữ các mảng con.
 Cài đặt phức tạp hơn so với các thuật toán trên.
Tóm lại, Insertion Sort, Selection Sort và Bubble Sort đơn giản và dễ hiểu, nhưng hiệu suất
của chúng kém hơn với các mảng lớn. Trong khi đó, Merge Sort có hiệu suất tốt hơn với các
mảng lớn nhưng yêu cầu bộ nhớ phụ và cài đặt phức tạp hơn.
BÀI 3:
Download