You are on page 1of 6

Hướng dẫn thực hành Sắp xếp, tìm kiếm, Cây Nhị Phân tìm kiếm

MỤC TIÊU, TÓM TẮT


Khái niệm:
 Sắp xếp là cách thức đặt các phần tử của danh sách vào đúng trật tự thỏa 1 tiêu chí nào đó dựa
trên nội dung của các phần tử.
 Ý tưởng của thuật toán tìm kiếm tuần tự

 Đi từng phần tử từ a0, a1, …, đến an-1.

 Mỗi lần đi đến thăm ai kiểm tra X có và ai có giống nhau không? Nếu có trả lời “có“ và
dừng chương trình, nếu không có thì đi tiếp đến phần tử tiếp theo (cho đến khi hết phần
tử).

 Tìm phần tử x có trong danh sách trên, bằng phương pháp tìm kiếm tuần tự sau:

Bước 1: Bắt đầu từ vị trí i=0 trong danh sách

Bước 2: Nếu (x==a[i]) tìm thấy x trong danh sách tại vị trí i và kết thúc;

Ngược lại tăng i lên một giá trị

Lặp lại bước 2

int timkiemtuantu(int a[], int N, int x)


{
for(int i=0; i< N; i++)
if (a[i] == x)
return i;
return -1;
}

 Tìm phần tử x có trong danh sách trên, bằng phương pháp tìm kiếm nhị phân sau:
Bước 1: left = 0, right = n -1;

Bước 2: Nếu (x==a[(left+right)/2]): Tìm thấy thì kết thúc;

Ngược lại Nếu x <a[(left+right)/2]) lặp lại bước 2 cho dãy từ vị trí left đến (left+right)/2-1;

Ngược lại: lặp lai bước 2 cho dãy từ vị trí (left+right)/2+1 đến right

………

NỘI DUNG THỰC HÀNH


• sắp xếp danh sách tăng dần theo Insertion sort , Selection Sort, …..

Làm tương tự cho các thuật toán sx còn lại.

1. INSERTION
2. SELECTION
3. BUBBLE
4. INTERCHANGE
5. QUICK SORT
6. HEAP SORT
7. MERGE SORT
CHƯƠNG TRÌNH MẪU

……

// SV TỰ BỔ SUNG ĐỂ CHO RA MÀN HÌNH NHƯ YÊU CẦU BÊN DƯỚI

Bài 1:
Làm như hướng dẫn bên trên và xuất ra được màn hình như bên dưới
Bài 2: Làm câu 8,9,10
Quản lý một danh sách có số phần tử khá lớn, biến động. Mỗi phần tử có kiểu int. Thường có
nhu cầu truy xuất phần tử đứng trước và phần tử đứng sau phần tử đang truy xuất. (Dùng cấu trúc danh
sách liên kết đôi).

1. Khai báo cấu trúc danh sách.

2. Viết thủ tục khởi tạo danh sách rỗng.

3. Xuất các phần tử trong danh sách

4. Viết thủ tục thêm một phần tử vào đầu danh sách.

5. Viết thủ tục thêm một phần tử vào cuối danh sách.

6. Viết thủ tục xóa phần tử đầu danh sách.

7. Viết thủ tục xóa phần tử cuối dang sách.

8. Viết thủ tục tìm một phần tử trong danh sách. Nếu tìm thấy, xóa phần tử này.

9. Viết thủ tục tìm một phần tử có giá trị bằng với giá trị X hoặc gần nhất và lớn hơn phần tữ
nhập vào;

10. Thêm một phần tử đứng trước phần tử tìm thấy.

Bài 3:
Quản lý một cây nhị phân (mỗi phần tử có kiểu int)

1. Khai báo cấu trúc cây nhị phân tìm kiếm.

2. Viết thủ tục khởi tạo cây rỗng.

3. Viết thủ tục thêm một phần tử vào cây (dùng đệ quy).

4. Viết thủ tục tìm một phần tử trong cây (dùng đệ quy).

5. Viết thủ tục xóa một nút trong cây (dùng đệ quy).

6. Viết thủ tục duyệt cây theo thứ tự NLR (dùng đệ quy)

7. Viết thủ tục duyệt cây theo thứ tự LNR (dùng đệ quy)

8. Viết thủ tục duyệt cây theo thứ tự LRN (dùng đệ quy)
//////

You might also like