Sắp xếpSắp xếp dữ liệu liên quan đến việc sắp xếp mảng theo một thứ tự nào đó chẳng hạn như tăng dần hoặc giảm dần.. Dữ liệu trong mảng dễ dàng tìm kiếm khi được sắp xếp.. Có hai cách
Trang 1Tìm kiếm và sắp xếp
TS Bùi Ngọc Thăng
BM KHMT- Khoa CNTT
Trang 2Thảo luận về các thuật toán tìm kiếm:
Trang 3Sắp xếp
Sắp xếp dữ liệu liên quan đến việc sắp xếp mảng theo một thứ tự nào đó chẳng hạn như tăng dần hoặc giảm dần
Dữ liệu trong mảng dễ dàng tìm kiếm khi được sắp xếp
Có hai cách thức dùng sắp xếp mảng Sắp xếp lựa chọn (Selection Sort) và Sắp xếp nổi bọt (Bubble Sort )
Trang 4Sắp xếp (tiếp)
Trong cách sắp xếp lựa chọn: giá trị của phần tử hiện tại được so sánh với các phần tử tiếp theo trong mảng để thu được giá trị lớn/nhỏ nhất
Có 2 phương pháp trong sắp xếp nổi bọt được triển khai:
Từ dưới lên (Bottom-up): So sánh các giá trị lần lượt từ cuối mảng nếu nhỏ hơn thì dẫn dần cho lên trên
Từ trên xuống: So sánh bắt đầu từ phần tử trên cùng, nếu phần tử lớn hơn sẽ bị chìm xuống dưới.
Trang 6 Với a[i] và a[i+1]:
Nếu a[i] lớn hơn a[i+1] thì đổi vị trí cho nhau.
Trang 9Mảng – Sắp xếp chọn (Selection sort)
• Ý 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í đúng là đầu tiên của dãy hiện hành
– Sau đó không quan tâm đến nó nữa, 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ử
Trang 122 12 8 5 6 4 15 1
Trang 132 4 12 8 6 5 15 1
Trang 16}
Trang 17Tìm kiếm nhị phân
sắp xếp
trí giữa mảng Nếu kết quả so sánh là bằng nhau, kết thúc tìm kiếm.
bước 1 với phần bên trái của mảng.
1 với phần bên phải của mảng.
Trang 188 2
0
64 14
6
lo
Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
hi
Tìm kiếm nhị phân – Ví dụ
Trang 19Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
0
64 14
6
Trang 20Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
Trang 21Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
Trang 22Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
0
64 14
6
Tìm kiếm nhị phân – Ví dụ
Trang 23Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
0
64 14
6
Tìm kiếm nhị phân – Ví dụ
Trang 24Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
0
64 14
6
lo hi
Tìm kiếm nhị phân – ví dụ
Trang 25Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
0
64 14
6
lo hi mid
Tìm kiếm nhị phân – Ví dụ
Trang 26Ví dụ: Tìm số 33 trong mảng được sắp xếp dưới đây:
8 2
0
64 14
6
lo hi mid
Tìm kiếm nhị phân – Ví dụ
Trang 28if(flag ==0){
printf("Element not found in the array");
} }
Trang 29Tham khảo