1 Thuật toán sắp xếp hoà nhập Mon May 30, 2011 10:09 pm
Admin
Quản trị viên
Thủ tục hoà nhập 2 mảng đã sắp
Bài toán 1. Cho 2 mảng đã được sắp
X= < X(p) và Y =
Tạo mảng Z =< Z(t),Z(t+1),..., Z(t+m-p+n-q+1) > có thứ tự từ 2 mảng X và Y.
Mô tả thuật toán hoà nhâp 1 (HN1)
Ý tưởng:
1. So sánh 2 phần tử nhỏ nhất của 2 mảng. Đưa phần tử nhỏ hơn ra mảng đích.(Loại bỏ phần tử này ra khỏi mảng chứa nó)
2. Lặp lại thủ tục này cho đến khi vét hết một trong 2 mảng.
3. Chuyển toàn bộ phần đuôi của mảng còn lại ra mảng đích.
Thuật giải:
Proce. HN1(X,Y: dãy; p, m, q, n: chỉ số; VAR Z)
1. t:=1; i:=p; j:=q;
2. While ( i<=m) & (j<=n)
a. IF Xi < Yj THEN { Zt: = Xi, i++ }
else { Zt: = Yj, j++ }
b. t++
3. IF i>m FOR k:=j to n
Zt+k-j := Yk
ELSE FOR k:=i to m
Zt+k-i := Xk
Bài toán 1. Cho 2 mảng đã được sắp
X= < X(p)
Tạo mảng Z =< Z(t),Z(t+1),..., Z(t+m-p+n-q+1) > có thứ tự từ 2 mảng X và Y.
Mô tả thuật toán hoà nhâp 1 (HN1)
Ý tưởng:
1. So sánh 2 phần tử nhỏ nhất của 2 mảng. Đưa phần tử nhỏ hơn ra mảng đích.(Loại bỏ phần tử này ra khỏi mảng chứa nó)
2. Lặp lại thủ tục này cho đến khi vét hết một trong 2 mảng.
3. Chuyển toàn bộ phần đuôi của mảng còn lại ra mảng đích.
Thuật giải:
Proce. HN1(X,Y: dãy; p, m, q, n: chỉ số; VAR Z)
1. t:=1; i:=p; j:=q;
2. While ( i<=m) & (j<=n)
a. IF Xi < Yj THEN { Zt: = Xi, i++ }
else { Zt: = Yj, j++ }
b. t++
3. IF i>m FOR k:=j to n
Zt+k-j := Yk
ELSE FOR k:=i to m
Zt+k-i := Xk