[QUOTE=minhtu]Em thấy đúng là hàm SapXepThuTuMang của bác PMXD là sắp xếp tăng dần đấy chứ (BubbleSort).
Nếu viết theo cách của bác phu_ho (SelectionSort) thì lại là sắp xếp giảm dần.
Tuy nhiên vòng lặp sau For j = 0 To UBound(Mang) thì hơi thừa, chỉ cần For j = 0 To i là được.
QUOTE]
Các bác không chuyên rồi. Thuật toán "sủi bọt" (bubble sort) này là thuật toán cơ bản nhất khi học tin. Ở đây ta nên dùng với phép lặp điều kiện thì đúng hơn là với phép lặp đếm. Điều này cho phép chủ động dừng vòng lặp khi thuật toán đã hoàn tất (chứ không nhất thiết phải thực hiện toàn bộ 2 phép lặp chồng nhau) và sẽ không sót trường hợp nào.Dim Mang() As Double
Dim i As Integer
Dim isNotYetSorted As Boolean
Do
isNotYetSorted = False
For i = Lbound(Mang) to Ubound(Mang) - 1
If Mang(i) > Mang(i + 1) Then
HoanVi(Mang(i), Mang (i+1))
isNotYetSorted = True
End If
Next
Loop Until Not isNotYetSorted.
Các bác check lại xem nhé.



Leave a comment: