SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Bài 5:
CÁC THUẬT TOÁN
SẮP XẾP VÀ TÌM KIẾM CƠ BẢN
Tìm hiểu về cách sử dụng mảng thông thường trong
VB.Net
Tìm hiểu về lớp ArrayList và cách sử dụng trong VB.Net
So sánh mảng thông thường và ArrayList
Áp dụng việc đo thời gian thực hiện lệnh
Nhắc lại bài cũ
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 2
Tìm hiểu các giải thuật sắp xếp cơ bản trên cấu trúc dữ
liệu mảng
Tìm hiểu các giải thuật tìm kiếm cơ bản trên cấu trúc dữ
liệu mảng
Đánh giá và so sánh hiệu quả các giải thuật
Mục tiêu bài học hôm nay
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 3
Sắp xếp là quá trình xử lý một danh sách các phần tử để
đặt chúng theo một thứ tự nào đó (tăng dần, giảm dần)
dựa trên nội dung thông tin lưu giữ tại mỗi phần tử.
Định nghĩa bài toán sắp xếp
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 4
3 1 6 8 5
1 3 5 6 8
Sắp xếp tăng dần
Bài toán: Cho trước một dãy số a1 , a2 ,… , aN được
lưu trữ trong cấu trúc dữ liệu mảng
Sắp xếp dãy số a1 , a2 ,… , aN là thực hiện việc bố trí lại
các phần tử sao cho hình thành được dãy mới ak1 , ak2
,… ,akN có thứ tự (ví dụ thứ tự tăng) nghĩa là aki > aki-1.
Bài toán sắp xếp dãy số
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 5
Để quyết định được những tình huống cần thay đổi vị trí các
phần tử trong dãy, cần dựa vào kết quả của một loạt phép so
sánh
-> Hai thao tác so sánh và gán là các thao tác cơ bản của hầu
hết các thuật toán sắp xếp.
Chú ý: Khi xây dựng một thuật toán sắp xếp cần tìm cách
giảm thiểu những phép so sánh và đổi chỗ không cần thiết để
tăng hiệu quả của thuật toán
Bài toán sắp xếp dãy số
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 6
Sắp xếp lựa chọn (Selection Sort)
Sắp xếp nổi bọt (Bubble Sort)
Sắp xếp chèn (Insertion Sort)
3 giải thuật sắp xếp cơ bản
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 7
Sắp xếp lựa chọn
Ý tưởng:
Chọn phần tử nhỏ nhất trong N phần tử ban đầu, đưa phần tử
này về vị trí đầu dãy hiện hành; sau đó loại nó khỏi danh sách
sắp xếp tiếp theo.
Xem dãy hiện hành chỉ còn N-1 phần tử của dãy ban đầu, bắt
đầu từ vị trí thứ 2; lặp lại quá trình trên cho dãy hiện hành… đến
khi dãy hiện hành chỉ còn 1 phần tử.
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 8
Sắp xếp lựa chọn
Các bước sắp xếp tăng dần:
Bước 1: i = 1 // lần xử lý đầu tiên
Bước 2: Tìm phần tử nhỏ nhất a[min] trong dãy hiện hành từ a[i]
đến a[N]
Bước 3: Hoán vị a[min] và a[i]
Bước 4: Nếu i < N-1 thì i = i+1; Lặp lại Bước 2
Ngược lại: Dừng
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 9
LƯU ĐỒ GIẢI
THUẬT SẮP XẾP
LỰA CHỌN
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 10
Sắp xếp lựa chọn
Ví dụ: Cho dãy số a:
{12, 2, 8, 5, 1, 6, 4, 15 }

Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 11
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 12
Sắp xếp lựa chọn
Cài đặt giải thuật bằng ngôn ngữ VB.Net
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 13
Public Sub SelectionSort()
Dim outer, inner, min, temp As Integer
For outer = 0 To numElements - 2
min = outer
For inner = outer + 1 To numElements - 1
If (arr(inner) < arr(min)) Then
min = inner
End If
Next
‘ Hoán đổi phần tử nhỏ nhất với phần tử đầu mảng
temp = arr(outer)
arr(outer) = arr(min)
arr(min) = temp
Next
End Sub
Sắp xếp lựa chọn
Đánh giá giải thuật trên: Ở lượt thứ i, bao giờ cũng cần (n-i) lần so
sánh để xác định phần tử nhỏ nhất hiện hành. Do vậy số lần so
sánh:
Số lần hoán vị (một hoán vị bằng 3 phép gán) lại phụ thuộc vào tình
trạng ban đầu của dãy số, ta chỉ có thể ước lược trong từng trường
hợp như sau:
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 14
Trường hợp Số lân so sánh Số phép gán
Tốt nhất n(n-1)/2 3(n-1)
Xấu nhất n(n-1)/2 n(n-1)/2 + 3(n-1)
Ý tưởng: xuất phát từ đầu dãy, so sánh 2 phần tử cạnh nhau để đưa
phần tử nhỏ hơn lên trước, sau đó lại xét cặp tiếp theo cho đến khi
tiến về đầu dãy. Nhờ vậy, ở lần xử lý thứ i sẽ tìm được phần tử ở vị
trí đầu dãy là i
Các bước:
Bước 1: i=1 // lần xử lý đầu tiên
Bước 2: j=N // duyệt từ cuối dãy trở về vị trí
Trong khi j>i thực hiện:
Nếu a[j]<a[j-1]: hoán vị a[j] và a[j-1]
j= j-1
Bước 3: i=i+1 // lần xử lý tiếp theo
Nếu i>N-1 thì dừng
Ngược lại, lặp lại Bước 2
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 15
Sắp xếp nổi bọt
LƯU ĐỒ GIẢI
THUẬT SẮP XẾP
NỔI BỌT
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 16
Ví dụ: Cho dãy số a:
{12, 2, 8, 5, 1, 6, 4, 15 }
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 17
Sắp xếp nổi bọt
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 18
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 19
Cài đặt giải thuật bằng ngôn ngữ VB.Net
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 20
Public Sub BubbleSort()
Dim outer, inner, temp As Integer
For outer = numElements - 1 To 2 Step -1
For inner = 0 To outer - 1
If (arr(inner) > arr(inner + 1)) Then
temp = arr(inner)
arr(inner) = arr(inner + 1)
arr(inner + 1) = temp
End If
Next
Next
End Sub
Sắp xếp nổi bọt
Sắp xếp nổi bọt
Đánh giá giải thuật:
Ở lượt thứ i, bao giờ cũng cần (n-i+1) lần so sánh để xác định
phần tử nhỏ nhất hiện hành. Do vậy số lần so sánh:
Số lượng phép hoán vị thực hiện tùy thuộc vào kết quả so sánh,
có thể ước lược trong từng trường hợp như sau
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 21
Trường hợp Số lân so sánh Số lần hoán vị
Tốt nhất 0
Xấu nhất
Sắp xếp chèn
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 22
Ý tưởng:
Trước hết ta xem phần tử a[0] là một dãy đã có thứ tự.
Bước 1: Chèn phần tử a[1] vào đúng vị trí trong dãy a[0] trên
sao cho dãy gồm a[0] và a[1] được sắp thứ tự
Bước 2: Chèn phần tử a[2] vào đúng vị trí trong dãy gồm a[0],
a[1] sao cho dãy gồm a[0], a[1], a[2] được sắp thứ tự
Tổng quát bước i, chèn phần tử a[i] vào đúng vị trí trong dãy đã
sắp xếp a[0],… a[i-1] sao cho dãy a[0], a[1],… a[i] được sắp thứ
tự.
Sau N-1 bước thì kết thúc
LƯU ĐỒ GIẢI
THUẬT SẮP
XẾP CHÈN
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 23
Sắp xếp chèn
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 24
Ví dụ: cho danh sách gồm 7 phần tử, trong đó 3 phần tử đầu đã đc
sắp xếp
Để tiếp tục sắp xếp phần tử thứ tư a4 = 6 vào danh sách con đó, ta
tìm vị trí thích hợp của nó là sau 3 và trước 7.
Làm tiếp theo với a5 = 4 ta được
Sắp xếp chèn
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 25
Làm tiếp theo với a6 = 2 ta được
Cuối cùng chèn a7 = 5
Sắp xếp chèn
Cài đặt giải thuật bằng ngôn ngữ VB.Net
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 26
Public Sub InsertionSort()
Dim inner, outer, temp As Integer
For outer = 1 To numElements - 1
temp = arr(outer)
inner = outer
While (inner > 0 AndAlso (arr(inner - 1) >= temp))
arr(inner) = arr(inner - 1)
inner -= 1
End While
arr(inner) = temp
Next
End Sub
Sắp xếp chèn
Đánh giá giải thuật: Độ phức tạp giải thuật phụ thuộc
vào số lần so sánh. Ở lượt thứ i, tối đa cần i lần so sánh
để tìm được vị trí chèn thích hợp. Do vậy số lần so sánh
tối đa là:
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 27
Đánh giá các giải thuật sắp xếp
Cả 3 GT đều có độ phức tạp là 0(n2)
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 28
Bài toán tìm kiếm
Tập dãy số a1 , a2 ,…, aN được lưu trữ ở dạng mảng
Cần tìm phần tử có giá trị x xem có trong mảng không
29
a1 a2 a3 … aN - 1 aN
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Các giải thuật tìm kiếm
Có 2 giải thuật tìm kiếm thường áp dụng:
Tìm kiếm tuyến tính: thường thực hiện với các mảng chưa được
sắp xếp thứ tự
Tìm kiếm nhị phân: thường thực hiện với các mảng đã sắp xếp
thứ tự
30Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Tìm kiếm tuyến tính
Ý tưởng: Tiến hành so sánh x lần lượt với các phần tử thứ nhất, thứ
hai… của mảng a cho đến khi gặp được phần tử có giá trị x cần tìm,
hoặc đã tìm đến hết mảng mà không thấy x.
Ví dụ: Tìm phần tử có giá trị x = 10
31
Đã tìm thấy tại vị
trí số 5
7 5 12 41 10 32 13 9 15 3
1 2 3 4 5 6 7 8 9 10
10
7
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Giải thuật tìm kiếm tuyến tính
Đầu vào: mảng a[i] và x
Đầu ra: Trả về True nếu tìm thấy, ngược lại trả về False
Bước 1:
i = 1; // bắt đầu từ phần tử đầu tiên của dãy
Bước 2:
So sánh a[i] với x, có 2 khả năng:
a[i] = x: Tìm thấy. Dừng
a[i] != x: Sang Bước 3.
Bước 3:
i = i+1; // xét tiếp phần tử kế trong mảng
Nếu i >N: Hết mảng, không tìm thấy. Dừng
Ngược lại: Lặp lại Bước 2.
32Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Lưu đồ giải thuật
tìm kiếm tuyến tính
33Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Cài đặt giải thuật
34Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Function SeqSearch(ByVal arr() As Integer,
ByVal sValue As Integer) As Integer
Dim index As Integer
For index = 0 To arr.GetUpperBound(0)
If (arr(index) = sValue) Then
Return True
End If
Next
Return False
End Function
Cài đặt giải thuật
Giải thuật trả về vị trí của phần tử tìm thấy trong mảng, hoặc trả về -1
nếu không tìm thấy:
35Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Function SeqSearch(ByVal arr() As Integer,
ByVal sValue As Integer) As Integer
Dim index As Integer
For index = 0 To arr.GetUpperBound(0)
If (arr(index) = sValue) Then
Return index
End If
Next
Return -1
End Function
Tìm kiếm nhị phân
Ý tưởng:
Tìm kiếm kiểu “tra từ điển”
Giải thuật tìm cách giới hạn phạm vi tìm kiếm sau mỗi
lần so sánh x với một phần tử trong dãy đã được sắp
xếp.
Tại mỗi bước, so sánh x với phần tử nằm ở vị trí giữa
của dãy tìm kiếm hiện hành:
Nếu x nhỏ hơn thì sẽ tìm kiếm ở nửa trước của dãy.
Ngược lại, tìm ở nửa sau của dãy.
36Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Giải thuật
Bước 1: left = 1; right = N; // tìm kiếm trên tất cả các phần
tử
Bước 2:
mid = (left+right)/2; // lấy mốc so sánh
So sánh a[mid] với x, có 3 khả năng:
a[mid] = x: Tìm thấy. Dừng
a[mid] > x: //tìm tiếp x trong dãy con aleft .. amid -1
 right =mid - 1;
a[mid] < x: //tìm tiếp x trong dãy con amid +1 .. aright
left = mid + 1;
Bước 3:
Nếu left <= right //còn phần tử chưa xét tìm tiếp.
Lặp lại Bước 2.
Ngược lại: Dừng //Ðã xét hết tất cả các phần tử.
37Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
LƯU ĐỒ GIẢI
THUẬT
38Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Tìm kiếm nhị phân
39
Ví dụ minh họa tìm x = 41
x
ml m
x
m
x
3 14 16 19 22 41 46 51 63 71
1 2 3 4 5 6 7 8 9 10
Tìm thấy x tại
vị trí 6
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Đánh giá các giải thuật tìm kiếm
Nếu tìm kiếm trên mảng dữ liệu chưa được sắp xếp thứ
tự thì sử dụng phương pháp tìm kiếm tuyến tính
Nếu tìm kiếm trên mảng đã sắp xếp thứ tự thì sử dụng
phương pháp tìm kiếm nhị phân.
Độ phức tạp thuật toán của hai phương pháp: 0(n)
40Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
Tổng kết
Sắp xếp và tìm kiếm là những bài toán quan trọng trong lập trình
máy tính.
Việc sắp xếp và tìm kiếm thường được tiến hành trên mảng
3 giải thuật cơ bản để sắp xếp với độ phức tạp 0(n2)
2 giải thuật tìm kiếm với độ phức tạp 0(n):
Tìm kiếm tuyến tính: thực hiện trên mảng chưa được sắp thứ tự
Tìm kiếm nhị phân: thực hiện trên mảng đã được sắp thứ tự
Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 41

Contenu connexe

Tendances

Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựAskSock Ngô Quang Đạo
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use caseTrung Chinh Hà
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệHưởng Nguyễn
 
Bài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lýBài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lýMasterCode.vn
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm nataliej4
 
Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1laducqb
 
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịThanh Hoa
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Tú Cao
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql. .
 
Bài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuBài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuLê Minh
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựleemindinh
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngNguyễn Danh Thanh
 
PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨM
PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨMPHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨM
PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨMSoM
 
Bài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmBài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmHoài Phạm
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...MasterCode.vn
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtHưởng Nguyễn
 
Ngân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhNgân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhCao Toa
 

Tendances (20)

Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use case
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
 
Bài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lýBài 7: Thiết kế cơ sở dữ liệu vật lý
Bài 7: Thiết kế cơ sở dữ liệu vật lý
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm
 
Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1
 
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Bài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuBài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệu
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin TứcBáo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
 
Chuong6 hoạt động ngắt
Chuong6 hoạt động ngắtChuong6 hoạt động ngắt
Chuong6 hoạt động ngắt
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
Đệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh CậnĐệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh Cận
 
PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨM
PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨMPHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨM
PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN TÍCH DỮ LIỆU CÔNG THỨC DƯỢC PHẨM
 
Bài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmBài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần Mềm
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
 
Ngân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhNgân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tính
 

Similaire à Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT

Bai3 timkiem sapxep
Bai3 timkiem sapxepBai3 timkiem sapxep
Bai3 timkiem sapxepHồ Lợi
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxepnhà tôi
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xepquang
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xepquang
 
Tìm kiếm và sắp nội
Tìm kiếm và sắp nộiTìm kiếm và sắp nội
Tìm kiếm và sắp nộikikihoho
 
Sap xep va tim kiem
Sap xep va tim kiem Sap xep va tim kiem
Sap xep va tim kiem acumenvn
 
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTrần Nguyên
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánVan Vo
 
Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Hồ Lợi
 
Ctdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepCtdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepNguyễn Ngọc Hà
 
C2 sap xep
C2 sap xepC2 sap xep
C2 sap xephiep0109
 
1. Algorithms_ Giải thuật.ppt
1. Algorithms_ Giải thuật.ppt1. Algorithms_ Giải thuật.ppt
1. Algorithms_ Giải thuật.pptNynonBi
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNguest717ec2
 
Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Hồ Lợi
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Loc Tran
 
Thuật toán ứng dụng - Tìm kiếm và sắp xếp
Thuật toán ứng dụng - Tìm kiếm và sắp xếpThuật toán ứng dụng - Tìm kiếm và sắp xếp
Thuật toán ứng dụng - Tìm kiếm và sắp xếpGCon47
 
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615clbinternet.info
 

Similaire à Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT (20)

Bai3 timkiem sapxep
Bai3 timkiem sapxepBai3 timkiem sapxep
Bai3 timkiem sapxep
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxep
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
 
Timkiem&sapxep
Timkiem&sapxepTimkiem&sapxep
Timkiem&sapxep
 
Tìm kiếm và sắp nội
Tìm kiếm và sắp nộiTìm kiếm và sắp nội
Tìm kiếm và sắp nội
 
Sap xep va tim kiem
Sap xep va tim kiem Sap xep va tim kiem
Sap xep va tim kiem
 
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật Toán
 
CHƯƠNG 4.pdf
CHƯƠNG 4.pdfCHƯƠNG 4.pdf
CHƯƠNG 4.pdf
 
Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Bài tập CTDL và GT 12
Bài tập CTDL và GT 12
 
Ctdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepCtdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xep
 
C2 sap xep
C2 sap xepC2 sap xep
C2 sap xep
 
1. Algorithms_ Giải thuật.ppt
1. Algorithms_ Giải thuật.ppt1. Algorithms_ Giải thuật.ppt
1. Algorithms_ Giải thuật.ppt
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáN
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Bài tập CTDL và GT 1
Bài tập CTDL và GT 1
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)
 
Thuật toán ứng dụng - Tìm kiếm và sắp xếp
Thuật toán ứng dụng - Tìm kiếm và sắp xếpThuật toán ứng dụng - Tìm kiếm và sắp xếp
Thuật toán ứng dụng - Tìm kiếm và sắp xếp
 
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
 

Plus de MasterCode.vn

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnMasterCode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnMasterCode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnMasterCode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnMasterCode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnMasterCode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnMasterCode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnMasterCode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnMasterCode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnMasterCode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnMasterCode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnMasterCode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnMasterCode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnMasterCode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 

Plus de MasterCode.vn (20)

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
 

Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT

  • 1. Bài 5: CÁC THUẬT TOÁN SẮP XẾP VÀ TÌM KIẾM CƠ BẢN
  • 2. Tìm hiểu về cách sử dụng mảng thông thường trong VB.Net Tìm hiểu về lớp ArrayList và cách sử dụng trong VB.Net So sánh mảng thông thường và ArrayList Áp dụng việc đo thời gian thực hiện lệnh Nhắc lại bài cũ Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 2
  • 3. Tìm hiểu các giải thuật sắp xếp cơ bản trên cấu trúc dữ liệu mảng Tìm hiểu các giải thuật tìm kiếm cơ bản trên cấu trúc dữ liệu mảng Đánh giá và so sánh hiệu quả các giải thuật Mục tiêu bài học hôm nay Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 3
  • 4. Sắp xếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một thứ tự nào đó (tăng dần, giảm dần) dựa trên nội dung thông tin lưu giữ tại mỗi phần tử. Định nghĩa bài toán sắp xếp Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 4 3 1 6 8 5 1 3 5 6 8 Sắp xếp tăng dần
  • 5. Bài toán: Cho trước một dãy số a1 , a2 ,… , aN được lưu trữ trong cấu trúc dữ liệu mảng Sắp xếp dãy số a1 , a2 ,… , aN là thực hiện việc bố trí lại các phần tử sao cho hình thành được dãy mới ak1 , ak2 ,… ,akN có thứ tự (ví dụ thứ tự tăng) nghĩa là aki > aki-1. Bài toán sắp xếp dãy số Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 5
  • 6. Để quyết định được những tình huống cần thay đổi vị trí các phần tử trong dãy, cần dựa vào kết quả của một loạt phép so sánh -> Hai thao tác so sánh và gán là các thao tác cơ bản của hầu hết các thuật toán sắp xếp. Chú ý: Khi xây dựng một thuật toán sắp xếp cần tìm cách giảm thiểu những phép so sánh và đổi chỗ không cần thiết để tăng hiệu quả của thuật toán Bài toán sắp xếp dãy số Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 6
  • 7. Sắp xếp lựa chọn (Selection Sort) Sắp xếp nổi bọt (Bubble Sort) Sắp xếp chèn (Insertion Sort) 3 giải thuật sắp xếp cơ bản Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 7
  • 8. Sắp xếp lựa chọn Ý tưởng: Chọn phần tử nhỏ nhất trong N phần tử ban đầu, đưa phần tử này về vị trí đầu dãy hiện hành; sau đó loại nó khỏi danh sách sắp xếp tiếp theo. Xem dãy hiện hành chỉ còn N-1 phần tử của dãy ban đầu, bắt đầu từ vị trí thứ 2; lặp lại quá trình trên cho dãy hiện hành… đến khi dãy hiện hành chỉ còn 1 phần tử. Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 8
  • 9. Sắp xếp lựa chọn Các bước sắp xếp tăng dần: Bước 1: i = 1 // lần xử lý đầu tiên Bước 2: Tìm phần tử nhỏ nhất a[min] trong dãy hiện hành từ a[i] đến a[N] Bước 3: Hoán vị a[min] và a[i] Bước 4: Nếu i < N-1 thì i = i+1; Lặp lại Bước 2 Ngược lại: Dừng Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 9
  • 10. LƯU ĐỒ GIẢI THUẬT SẮP XẾP LỰA CHỌN Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 10
  • 11. Sắp xếp lựa chọn Ví dụ: Cho dãy số a: {12, 2, 8, 5, 1, 6, 4, 15 }  Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 11
  • 12. Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 12
  • 13. Sắp xếp lựa chọn Cài đặt giải thuật bằng ngôn ngữ VB.Net Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 13 Public Sub SelectionSort() Dim outer, inner, min, temp As Integer For outer = 0 To numElements - 2 min = outer For inner = outer + 1 To numElements - 1 If (arr(inner) < arr(min)) Then min = inner End If Next ‘ Hoán đổi phần tử nhỏ nhất với phần tử đầu mảng temp = arr(outer) arr(outer) = arr(min) arr(min) = temp Next End Sub
  • 14. Sắp xếp lựa chọn Đánh giá giải thuật trên: Ở lượt thứ i, bao giờ cũng cần (n-i) lần so sánh để xác định phần tử nhỏ nhất hiện hành. Do vậy số lần so sánh: Số lần hoán vị (một hoán vị bằng 3 phép gán) lại phụ thuộc vào tình trạng ban đầu của dãy số, ta chỉ có thể ước lược trong từng trường hợp như sau: Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 14 Trường hợp Số lân so sánh Số phép gán Tốt nhất n(n-1)/2 3(n-1) Xấu nhất n(n-1)/2 n(n-1)/2 + 3(n-1)
  • 15. Ý tưởng: xuất phát từ đầu dãy, so sánh 2 phần tử cạnh nhau để đưa phần tử nhỏ hơn lên trước, sau đó lại xét cặp tiếp theo cho đến khi tiến về đầu dãy. Nhờ vậy, ở lần xử lý thứ i sẽ tìm được phần tử ở vị trí đầu dãy là i Các bước: Bước 1: i=1 // lần xử lý đầu tiên Bước 2: j=N // duyệt từ cuối dãy trở về vị trí Trong khi j>i thực hiện: Nếu a[j]<a[j-1]: hoán vị a[j] và a[j-1] j= j-1 Bước 3: i=i+1 // lần xử lý tiếp theo Nếu i>N-1 thì dừng Ngược lại, lặp lại Bước 2 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 15 Sắp xếp nổi bọt
  • 16. LƯU ĐỒ GIẢI THUẬT SẮP XẾP NỔI BỌT Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 16
  • 17. Ví dụ: Cho dãy số a: {12, 2, 8, 5, 1, 6, 4, 15 } Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 17 Sắp xếp nổi bọt
  • 18. Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 18
  • 19. Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 19
  • 20. Cài đặt giải thuật bằng ngôn ngữ VB.Net Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 20 Public Sub BubbleSort() Dim outer, inner, temp As Integer For outer = numElements - 1 To 2 Step -1 For inner = 0 To outer - 1 If (arr(inner) > arr(inner + 1)) Then temp = arr(inner) arr(inner) = arr(inner + 1) arr(inner + 1) = temp End If Next Next End Sub Sắp xếp nổi bọt
  • 21. Sắp xếp nổi bọt Đánh giá giải thuật: Ở lượt thứ i, bao giờ cũng cần (n-i+1) lần so sánh để xác định phần tử nhỏ nhất hiện hành. Do vậy số lần so sánh: Số lượng phép hoán vị thực hiện tùy thuộc vào kết quả so sánh, có thể ước lược trong từng trường hợp như sau Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 21 Trường hợp Số lân so sánh Số lần hoán vị Tốt nhất 0 Xấu nhất
  • 22. Sắp xếp chèn Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 22 Ý tưởng: Trước hết ta xem phần tử a[0] là một dãy đã có thứ tự. Bước 1: Chèn phần tử a[1] vào đúng vị trí trong dãy a[0] trên sao cho dãy gồm a[0] và a[1] được sắp thứ tự Bước 2: Chèn phần tử a[2] vào đúng vị trí trong dãy gồm a[0], a[1] sao cho dãy gồm a[0], a[1], a[2] được sắp thứ tự Tổng quát bước i, chèn phần tử a[i] vào đúng vị trí trong dãy đã sắp xếp a[0],… a[i-1] sao cho dãy a[0], a[1],… a[i] được sắp thứ tự. Sau N-1 bước thì kết thúc
  • 23. LƯU ĐỒ GIẢI THUẬT SẮP XẾP CHÈN Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 23
  • 24. Sắp xếp chèn Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 24 Ví dụ: cho danh sách gồm 7 phần tử, trong đó 3 phần tử đầu đã đc sắp xếp Để tiếp tục sắp xếp phần tử thứ tư a4 = 6 vào danh sách con đó, ta tìm vị trí thích hợp của nó là sau 3 và trước 7. Làm tiếp theo với a5 = 4 ta được
  • 25. Sắp xếp chèn Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 25 Làm tiếp theo với a6 = 2 ta được Cuối cùng chèn a7 = 5
  • 26. Sắp xếp chèn Cài đặt giải thuật bằng ngôn ngữ VB.Net Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 26 Public Sub InsertionSort() Dim inner, outer, temp As Integer For outer = 1 To numElements - 1 temp = arr(outer) inner = outer While (inner > 0 AndAlso (arr(inner - 1) >= temp)) arr(inner) = arr(inner - 1) inner -= 1 End While arr(inner) = temp Next End Sub
  • 27. Sắp xếp chèn Đánh giá giải thuật: Độ phức tạp giải thuật phụ thuộc vào số lần so sánh. Ở lượt thứ i, tối đa cần i lần so sánh để tìm được vị trí chèn thích hợp. Do vậy số lần so sánh tối đa là: Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 27
  • 28. Đánh giá các giải thuật sắp xếp Cả 3 GT đều có độ phức tạp là 0(n2) Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 28
  • 29. Bài toán tìm kiếm Tập dãy số a1 , a2 ,…, aN được lưu trữ ở dạng mảng Cần tìm phần tử có giá trị x xem có trong mảng không 29 a1 a2 a3 … aN - 1 aN Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 30. Các giải thuật tìm kiếm Có 2 giải thuật tìm kiếm thường áp dụng: Tìm kiếm tuyến tính: thường thực hiện với các mảng chưa được sắp xếp thứ tự Tìm kiếm nhị phân: thường thực hiện với các mảng đã sắp xếp thứ tự 30Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 31. Tìm kiếm tuyến tính Ý tưởng: Tiến hành so sánh x lần lượt với các phần tử thứ nhất, thứ hai… của mảng a cho đến khi gặp được phần tử có giá trị x cần tìm, hoặc đã tìm đến hết mảng mà không thấy x. Ví dụ: Tìm phần tử có giá trị x = 10 31 Đã tìm thấy tại vị trí số 5 7 5 12 41 10 32 13 9 15 3 1 2 3 4 5 6 7 8 9 10 10 7 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 32. Giải thuật tìm kiếm tuyến tính Đầu vào: mảng a[i] và x Đầu ra: Trả về True nếu tìm thấy, ngược lại trả về False Bước 1: i = 1; // bắt đầu từ phần tử đầu tiên của dãy Bước 2: So sánh a[i] với x, có 2 khả năng: a[i] = x: Tìm thấy. Dừng a[i] != x: Sang Bước 3. Bước 3: i = i+1; // xét tiếp phần tử kế trong mảng Nếu i >N: Hết mảng, không tìm thấy. Dừng Ngược lại: Lặp lại Bước 2. 32Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 33. Lưu đồ giải thuật tìm kiếm tuyến tính 33Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 34. Cài đặt giải thuật 34Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản Function SeqSearch(ByVal arr() As Integer, ByVal sValue As Integer) As Integer Dim index As Integer For index = 0 To arr.GetUpperBound(0) If (arr(index) = sValue) Then Return True End If Next Return False End Function
  • 35. Cài đặt giải thuật Giải thuật trả về vị trí của phần tử tìm thấy trong mảng, hoặc trả về -1 nếu không tìm thấy: 35Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản Function SeqSearch(ByVal arr() As Integer, ByVal sValue As Integer) As Integer Dim index As Integer For index = 0 To arr.GetUpperBound(0) If (arr(index) = sValue) Then Return index End If Next Return -1 End Function
  • 36. Tìm kiếm nhị phân Ý tưởng: Tìm kiếm kiểu “tra từ điển” Giải thuật tìm cách giới hạn phạm vi tìm kiếm sau mỗi lần so sánh x với một phần tử trong dãy đã được sắp xếp. Tại mỗi bước, so sánh x với phần tử nằm ở vị trí giữa của dãy tìm kiếm hiện hành: Nếu x nhỏ hơn thì sẽ tìm kiếm ở nửa trước của dãy. Ngược lại, tìm ở nửa sau của dãy. 36Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 37. Giải thuật Bước 1: left = 1; right = N; // tìm kiếm trên tất cả các phần tử Bước 2: mid = (left+right)/2; // lấy mốc so sánh So sánh a[mid] với x, có 3 khả năng: a[mid] = x: Tìm thấy. Dừng a[mid] > x: //tìm tiếp x trong dãy con aleft .. amid -1  right =mid - 1; a[mid] < x: //tìm tiếp x trong dãy con amid +1 .. aright left = mid + 1; Bước 3: Nếu left <= right //còn phần tử chưa xét tìm tiếp. Lặp lại Bước 2. Ngược lại: Dừng //Ðã xét hết tất cả các phần tử. 37Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 38. LƯU ĐỒ GIẢI THUẬT 38Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 39. Tìm kiếm nhị phân 39 Ví dụ minh họa tìm x = 41 x ml m x m x 3 14 16 19 22 41 46 51 63 71 1 2 3 4 5 6 7 8 9 10 Tìm thấy x tại vị trí 6 Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 40. Đánh giá các giải thuật tìm kiếm Nếu tìm kiếm trên mảng dữ liệu chưa được sắp xếp thứ tự thì sử dụng phương pháp tìm kiếm tuyến tính Nếu tìm kiếm trên mảng đã sắp xếp thứ tự thì sử dụng phương pháp tìm kiếm nhị phân. Độ phức tạp thuật toán của hai phương pháp: 0(n) 40Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản
  • 41. Tổng kết Sắp xếp và tìm kiếm là những bài toán quan trọng trong lập trình máy tính. Việc sắp xếp và tìm kiếm thường được tiến hành trên mảng 3 giải thuật cơ bản để sắp xếp với độ phức tạp 0(n2) 2 giải thuật tìm kiếm với độ phức tạp 0(n): Tìm kiếm tuyến tính: thực hiện trên mảng chưa được sắp thứ tự Tìm kiếm nhị phân: thực hiện trên mảng đã được sắp thứ tự Slide 5 - Các thuật toán sắp xếp và tìm kiếm cơ bản 41