PDA

View Full Version : Giúp em bài đệ qui này với



quantt
11-09-2009, 06:59
Em có thủ tục đệ qui xắp xếp như sau nhưng em không hiểu nó thực hiện như thế nào cả. nhờ các bác giải thích giúp em với (theo cơ chế stack)
PROCEDURE SORT(DAU,CUOI:WORD);
BEGIN
IF DAU<>CUOI THEN
BEGIN
SORT(DAU+1,CUOI)
IF A[DAU]>A[DAU+1] THEN
BEGIN
SWAP(A[DAU],A[DAU+1]);{Thu tuc doi cho 2 phan tu trong mang}
SORT(DAU+1,CUOI);
END;
END;
END;
giả sử dãy cần sắp xếp là: 2 9 4 1 5 chẳng hạn.
em came ơn các bác trước nhé.

quangtq
11-09-2009, 16:18
Lần 1:
Dau = 1, Cuoi = 5
1<>5 => Gọi thủ tục Sort(2,5).
Tiếp tục, đến khi dau = cuoi (5=5).
Thì thoát ra khỏi thủ tục đó.
Quay lại vị trí thứ 4 (dau = 4)
a[dau] = 1, a[dau+1]=5 => Ko đổi chỗ
Dãy là 2 9 4 1 5
Lại gọi sort(dau+1,cuoi). Lúc này 5=5. Thoát ra.
Tiếp tục về với dau = 3.
a[dau]=4, a[dau+1]=1 => Đổi, dãy là : 2 9 1 4 5
Gọi sort tiếp.
......
Nói hết ra khá là dài.
Đến đây chắc bạn tự hiểu được rồi.
:D

quantt
14-09-2009, 08:57
Cảm ơn bác nhiều nhé.