Giải thuật ñổi chổ trực tiếp –Interchange Sort 2.2.3.. Giải thuật chọn trực tiếp-Selection Sort 2.2.4.. Giải thuật chèn trực tiếp-Insert Sort 2.2.5.. Giải thuật nhanh – Quick Sort Khoa C
Trang 11 12 23 34 46 59 69 77
11
L
Tìm giá trị X = 85 (Tìm thấy)
M
X
Mid = 5 M[mid]= 46
X > M[mid]
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cð CNTT TP.HCM
F
This is trial version www.adultpdf.com
Trang 27 12 23 34 46 59 69 77
12
Minh Họa
Tìm giá trị X = 85 (Tìm thấy)
M
X
Mid = 8 M[mid] = 77
X > M[mid]
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 37 12 23 34 46 59 69 77
13
90 85
Tìm giá trị X = 85 (Tìm thấy)
đã tìm thấy tại
vị trắ 9
M
X
Mid = 9 M[mid] = 85
X = M[mid]
ẹ Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cđ CNTT TP.HCM
L F
This is trial version www.adultpdf.com
Trang 4Minh Họa
Tìm kiếm phần tử có giá trị X = 5 (tìm thấy):
True 5
4 False
4 4
3
True False
False 4
3 False
4 3
2
True False
False 3
2 False
4 1
1
False True
False 8
5 False
10 1
B.ñầu
X> M[Mid]
X<
M[Mid]
X=
M[Mid]
M[Mid]
Mid
First>L ast Last
First
Lần
lặp
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cð CNTT TP.HCM
Giả sử dãy M gồm 10 phần tử có khóa như sau (N = 10)
2 3 4 5 8 15 17 22 25 30
14
This is trial version www.adultpdf.com
Trang 5Tìm kiếm phần tử có giá trị X = 7 (không tìm thấy)
True 4
5 4
True False
False 5
4 False
4 4
3
True False
False 4
3 False
4 3
2
True False
False 3
2 False
4 1
1
False True
False 8
5 False
10 1
B.ñầu
X> M[Mid]
X<
M[Mid]
X=
M[Mid]
M[Mid]
Mid
First>
Last Last
First
Lần
lặp
© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cð CNTT TP.HCM
1 3 4 5 8 15 17 22 25 30
15
This is trial version www.adultpdf.com
Trang 6Giải thuật:
B1: First = 1 B2: Last = N B3: IF (First > Last)
B3.1: Không tìm thấy B3.2: Thực hiện Bkt B4: Mid = (First + Last)/ 2 B5: IF (X = M[Mid])
B5.1: Tìm thấy tại vị trí Mid B5.2: Thực hiện Bkt
B6: IF (X < M[Mid])
B6.1: Last = Mid – 1 B6.2: Lặp lại B3
B7: IF (X > M[Mid])
B7.1: First = Mid + 1 B7.2: Lặp lại B3
Bkt: Kết thúc
© Dương Thành Phết-www.thayphet.netThis is trial version Khoa CNTT Trường Cð CNTT TP.HCM
www.adultpdf.com
Trang 7int First = 1; int Last = N;
while (First <= Last){
int Mid = (First + Last)/2;
if (X == M[Mid])
return Mid;
if (X < M[Mid])
Last = Mid Ờ 1;
else
First = Mid + 1;
} return -1;
}
ẹ Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cđ CNTT TP.HCM
đánh giá giải thuật
độ phức tập tắnh toán cấp n: T(n)=O(Log2n)
This is trial version www.adultpdf.com
Trang 82.2 Các giải thuật sắp xếp
© Dương Thành Phết-www.thayphet.net
2.2.1 Bài toán sắp xếp
2.2.2 Giải thuật ñổi chổ trực tiếp –Interchange Sort
2.2.3 Giải thuật chọn trực tiếp-Selection Sort
2.2.4 Giải thuật chèn trực tiếp-Insert Sort
2.2.5 Giải thuật nổi bọt – Bubble Sort
2.2.6 Giải thuật nhanh – Quick Sort
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com
Trang 9ðể thuận tiện và giảm thiểu thời gian thao tác mà ñặc biệt là ñể tìm kiếm Do vậy sắp xếp dữ liệu là một trong những thao tác cần thiết và thường gặp trong quá trình lưu trữ, quản lý dữ liệu
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ự tăng hoặc giảm dựa trên nội dung lưu trữ trên mỗi phần tử
Có rất nhiều thuật toán sắp xếp song chúng ta chỉ quan tâm ñến 5 giải thuật sắp xếp thường sử dụng
© Dương Thành Phết-www.thayphet.netThis is trial version Khoa CNTT Trường Cð CNTT TP.HCM
www.adultpdf.com
Trang 10© Dương Thành Phết-www.thayphet.net
Khái niệm về nghịch thế:
an
an-1
a3
a2
a1
Giả sử mảng có thứ tự tăng dần, nếu i<j và ai>aj thì gọi là nghịch thế
Mục tiêu của sắp xếp là khử các nghịch thế(bằng cách hoán vị các phần tử)
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version www.adultpdf.com