You are on page 1of 1

Bài tập thực hành chia để trị

Bài 1: Viết hàm tính x^n bằng kỹ thuật chia để trị (x là số thực, n là số nguyên không âm)
Gợi ý:
1 nếu n=0
n

{
x = x nếu n=1
n
x 2∗x
n−
n
2

Các bài sau sử dụng dữ liệu lưu trữ trong file “data.txt”
Bài 2: Viết hàm recordtype Max(recordtype a[], int L, int R) tìm mẩu tin có khóa lớn
nhất trong mảng a có các phần tử từ a[L] đến a[R] bằng kỹ thuật chia để trị (mảng a lấy
dữ liệu từ file “data.txt”)
Gợi ý: Để tìm mẩu tin có khóa lớn nhất trong mảng a, ta chia mảng a làm 2 nửa. Tìm mẩu
tin có khóa lớn nhất trong mỗi nửa, sau đó tìm mẩu tin có khóa lớn nhất trong 2 mẩu tin.
Nếu mảng chỉ có một phần tử thì mẩu tin có khóa lớn nhất chính là phần tử đó. Sử dụng
công thức đệ quy sau:
a [ L ] nếu L=R
Max ( a , L , R )=
{
Max 2 ( Max (a , L , M ) , Max(a , M + 1, R) ) nếu L< R

Trong đó:
- M là điểm giữa của L và R
- Max2, nhận vào x và y là 2 mẩu tin (kiểu recordtype) trả về mẩu tin có khóa lớn
nhất trong 2 mẩu tin x, y
Bài 3: Viết hàm sắp xếp trộn (MergeSort) mảng a có n phần tử, mỗi phần tử là một mẩu
tin. Dữ liệu cho mảng a lấy từ file “data.txt”. Kết quả sắp xếp in ra màn hình và lưu vào
trong file “Sorted_Data.txt”
Gợi ý: tham khảo video clip TẠI ĐÂY
Bài 4: Viết hàm tìm kiếm nhị phân để tìm mẩu tin có khóa x (số nguyên), trong mảng a
có n mẩu tin đã được sắp thứ tự theo khóa. Nếu tìm thấy thì trả về chỉ số của phần tử tìm
thấy, nếu không tìm thâys Dữ liệu cho mảng a lấy từ file “Sorted trả về -1. Data.txt” (Kết
quả của bài 3)
Các bài trên, phải viết hàm main tương ứng để kiểm thử tính đúng đắn của mỗi hàm.

You might also like