BÀI T CHƯƠNG P I:
Thuật toán tìm ếm ki
- Mô tả thuậ toán: Là thuậ toán t t được thiết kế để xác đị vị trí củ tử cụ nh a 1 phần th
trong một tập hợp dữ liệu
Bắ đầt u từ tử đầphần u tiên của tập hợp, so sánh lầ các tử vớ giá ị cầ tìm n lượt phần i tr n
Nếu : Tìm tử giá ị cầthấy phần khớp với tr n tìm -> trả về vị trí củ tử đó a phần
Đi hế mà không t tập hợp thấy -> trả về thông báo không tìm thấy
INPUT: Dãy a1, a2, ...., an
OUTPUT: Vị trí của ph n ần tử cầ tìm
- ả mã Gi
1. dãy a1, a2, ..., Nhập N an
2. for i:= to do 1 n
if = a[i] phần tử cụ ể then th
break
else i:=0
3. in ra giá tr i
Thuật toán tìm MIN/MAX
- Mô tả thuậ toán: Là thuậ toán t t được thiết kế để xác đị tử lớnh ph n n nhất trong một tập
hợp dữ liệu
T gắ m n ph n tử đầu tiên củ danh sách là MAX/MINa
Duyệt qua từng phần tử trong danh sách
So sánh từng tử vớ giá ị MAX/MIN phần i tr
Nế tạ gắu ph n n tử lớ hơn/bé hơn giá ị MAX/MIN -tr > m n a ph n MAX/MIN bằng giá ị củtr tử
hiện tại
Nế tụ u không - bỏ qua và > tiếp c sang ph n p tử tiế theo
INPUT: Dãy a1, a2, ...., an
OUTPUT: G ị lớ ất/ tr n nh nh nhấ củt a dãy số
- ả mã Gi
1. dãy a1, a2, ..., Nhập N an
2. Max/min := a1
3. For i:= to do 2 n
If i] max then a[ >
Max a[:= i]
4. In ra i] a[
Thuật toán tính n!
Mô tả thuật toán: Thuật toán tính n! (giai thừa) được sử dụng để tính tích của tấ ả các số t c
nguyên dương từ 1 đến n.
Xét n
Nếu đưa ra giai n=0 thừa =1
Nếu khác n 0
Gắn giá ị giai ừa = tr th 1
Chạy vòng lặ từ 1->n , giá ị giai p nhân tr thừa với mỗi số trong dãy
Kết thúc vòng lặ giá ị giai p tr thừa chính là n!
INPUT: số tự nhiên n
OUTPUT: n!
Giả mã
1. Nhập N
2. if then n!=n=0 1
3. else
n! := 1
for i:= to do 1 n
n!= i * n!
4. In ra n!
Thuật toán sắp xếp
Mô tả Là thuậ toán sử dụng để sắ: t được p xế lớ p n dãy số theo ứ tự từ bé đếth n ho c từ lớn
đến bé
Duyệt qua danh sách nhiều lần
Trong mỗi lần duyệt so sánh tử tử sau nế tử sau lớ hơn thì đổphần hiện tại với phần u phần n i
chỗ
Lặ đếp n khi không còn hoán đổ nào xả ra i y
INPUT: Dãy a1, a2,..., an
OUTPUT: Dãy số đã được sắp xếp
Giả mã :
1. dãy a1, a2, ..., Nhập N an
2. For i:= to n-1 1 do
For j:=1 to n- do i
If j] > then đổ j] và a[ a[j+1] i ch a[ a[j+1]
3. In ra dãy được sắ xếp p

Preview text:

BÀI TẬP CHƯƠNG I: Thuật toán tìm kiếm
- Mô tả thuật toán: Là thuật toán được thiết kế để xác đị vị trí củ nh a 1 phần tử cụ thể
trong một tập hợp dữ liệu
Bắt đầu từ phần tử đầu tiên của tập hợp, so sánh lần lượt các phần tử với giá trị cầ tìm n
Nếu : Tìm thấy phần tử khớp với giá trị cần tìm -> trả về vị trí của phầ tử đó n
Đi hết tập hợp mà không thấy -> trả về thông báo không tìm thấy INPUT: Dãy a1, a2, ...., an
OUTPUT: Vị trí của phần tử cần tìm - Giả mã
1. Nhập N và dãy a1, a2, ..., an 2. for i:=1 to do n
if a[i]= phần tử cụ thể then break else i:=0 3. in ra giá trị i Thuật toán tìm MIN/MAX
- Mô tả thuật toán: Là thuật toán được thiết kế để xác định phầ tử lớ n n nhất trong một tập hợp dữ liệu
Tạm gắn phần tử đầu tiên của danh sách là MAX/MIN
Duyệt qua từng phần tử trong danh sách So sánh từng phầ tử v n ới giá trị MAX/MIN
Nếu phần tử lớn hơn/bé hơn giá trị MAX/MIN -> tạm gắn MAX/MIN bằng giá trị của phần tử hiện tại
Nếu không -> bỏ qua và tiếp tục sang phần tử tiếp theo INPUT: Dãy a1, a2, ...., an OUTPUT: G iá trị lớn ất/ nh ỏ nh nhất của dãy số - Giả mã
1. Nhập N và dãy a1, a2, ..., an 2. Max/min := a1 3. For i:= 2 to do n If a[i] > max then Max:=a[i] 4. In ra a[i] Thuật toán tính n!
Mô tả thuật toán: Thuật toán tính n! (giai thừa) được sử dụng để tính tích của tất cả các số
nguyên dương từ 1 đến n. Xét n
Nếu n=0 đưa ra giai thừa =1 Nếu n khác 0
Gắn giá trị giai thừa = 1
Chạy vòng lặp từ 1->n , nhân giá trị giai thừa với mỗi số trong dãy
Kết thúc vòng lặp giá trị giai thừa chính là n! INPUT: số tự nhiên n OUTPUT: n! Giả mã 1. Nhập N 2. if n=0 then n!=1 3. else n! := 1 for i:=1 to do n n!= i * n! 4. In ra n! Thuật toán sắp xếp
Mô tả : Là thuật toán được sử dụng để sắp xếp dãy số theo thứ tự từ bé đế lớ n n hoặc từ lớn đến bé
Duyệt qua danh sách nhiều lần
Trong mỗi lần duyệt so sánh phầ tử n
hiện tại với phần tử sau nếu phầ tử sau lớ n hơn thì đổ n i chỗ
Lặp đến khi không còn hoán đổi nào xảy ra INPUT: Dãy a1, a2,..., an
OUTPUT: Dãy số đã được sắp xếp Giả mã :
1. Nhập N và dãy a1, a2, ..., an 2. For i:= 1 to n-1 do For j:=1 to n-i do
If a[j] > a[j+1] then đổi chỗ a[j] và a[j+1]
3. In ra dãy được sắp xếp