Tải bản đầy đủ (.pdf) (10 trang)

Chương 2 TÌM kím M & S P X P doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.57 MB, 10 trang )

1
2.1. Các giải thuật tìm kiếm
2.1.1. Bài toán tìm kiếm
2.1.2. Giải thuật tìm kiếm tuyến tính
2.1.3. Giải thuật Tìm kiếm nhị phân
2.2. Các giải thuật sắp xếp
2.2.1. Bài toán sắp xếp
3.2.1 Giải thuật ñổi chổ trực tiếp –Interchange Sort
3.2.2 Giải thuật chọn trực tiếp-Selection Sort
3.2.3 Giải thuật chèn trực tiếp-Insert Sort
3.2.4 Giải thuật nổi bọt – Bubble Sort
3.2.5 Giải thuật nhanh – Quick Sort
2.3. Bài tập
Chương 2
TÌM KiẾM & SẮP XẾP
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
2
2.1 Các Giải Thuật Tìm Kiếm
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
2.1.1. Bài toán tìm kiếm
2.1.2. Giải thuật tìm kiếm tuyến tính
2.1.3. Giải thuật Tìm kiếm nhị phân
This is trial version
www.adultpdf.com
3
2.1.1 Bài Toán Tìm Kiếm
 Trong thực tế, khi thao tác, khai thác dữ liệu hầu như


lúc nào cũng phải thực hiện thao tác tìm kiếm.
 Kết quả của việc tìm kiếm có thể là không tìm thấy
hoặc tìm thấy.
 Nếu kết quả là tìm thấy thì nhiều khi còn phải xác ñịnh
xem vị trí của phần tử tìm thấy là ở ñâu?
 Việc tìm kiếm nhanh hay chậm tùy thuộc vào trạng thái
và trật tự của dữ liệu trên ñó.
 Có 2 thuật toán chính: Tìm kiếm tuyến tính & Tìm kiếm
nhị phân
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
4
 Giả sử chúng ta có một mảng M gồm N phần tử.
 Vấn ñề ñặt ra là có hay không phần tử có giá trị bằng X
trong mảng M?
 Nếu có thì phần tử có giá trị bằng X là phần tử thứ mấy
trong mảng M?
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
5
2.1.2. Giải Thuật Tìm Kiếm Tuyến Tính
 Ý Tưởng:
Tiến hành so sánh x với phần tử thứ nhất, thứ hai…của
mảng A cho ñến khi gặp ñược phần tử có khóa cần tìm,
hoặc ñã tìm hết mảng mà không thấy x.
Ưu ñiểm: Thuật toán này có thể cho ta thực hiện tìm

kiếm khi các phần tử trong mảng chưa ñược sắp xếp.
Nhược ñiểm: Sẽ mất rất nhiều thời gian nếu như
không có phần tử chúng ta cần tìm.
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
6
VD:Tìm x = 14
12 3 5 1 14 9 0 10 2 7
14
14
Chưa
hết
mảng
Tìm thấy tại
vị trí thứ 5
Tìm thấy tại
vị trí thứ 5
1 2 3 4 5 6 7 8 9 10
12 3 5 1 14 9 0 10 2 7
VD:Tìm x = 30
30
Chưa
hết
mảng
Hết mảng
không tìm
thấy
1 2 3 4 5 6 7 8 9 10

 Minh Họa
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
7
 Giải thuật:
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 ; // Thực hiện bước 3.
Bước 3 :
• i = i+1; // xét phần tử kế tiếp 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.
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
8
 Cài ðặt
Int Timtuyentinh (int a[] , int N , int x)
{
int i = 0;
while((i < N) && (a[i] != x))
i++;
if( i == N)
return -1 ; // tìm hết mảng nhưng không có x
else

return i ; //a[i] là phần tử có khóa x.
}
© 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(n)
This is trial version
www.adultpdf.com
9
2.1.3 Giải Thuật Tìm Kiếm Nhị Phân
 Ý Tưởng:
- Lần tìm kiếm ban ñầu là phần tử ñầu tiên của dãy
(First = 1) ñến phần tử cuối cùng của dãy (Last = N).
- So sánh giá trị X với giá trị phần tử ñứng ở giữa
của dãy M là M[Mid].
- Nếu X = M[Mid]: Tìm thấy
- Nếu X < M[Mid]: Rút ngắn phạm vi tìm kiếm
về nửa ñầu của dãy M (Last = Mid–1)
- Nếu X > M[Mid]: Rút ngắn phạm vi tìm kiếm
về nửa sau của dãy M (First = Mid+1)
- Lặp lại quá trình này cho ñến khi tìm thấy phần tử
có giá trị X hoặc phạm vi tìm kiếm không còn nữa
(First > Last).
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com
10
Ưu ñiểm: Thuật toán tìm nhị phân sẽ rút ngắn ñáng
kể thời gian tìm kiếm.

Nhược ñiểm: Chỉ thực hiện ñược trên dãy ñã có thứ
tự.
© Dương Thành Phết-www.thayphet.net
Khoa CNTT Trường Cð CNTT TP.HCM
This is trial version
www.adultpdf.com

×