Sort trong mảng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Quang_Hải

Thành viên gạo cội
Tham gia
21/2/09
Bài viết
6,076
Được thích
8,007
Nghề nghiệp
Làm đủ thứ
Vì 1 lý do nào đó chúng ta buộc phải sort trực tiếp trong mảng. Nhưng nếu ta có 1 vùng dữ liệu khoảng 1000 dòng và 5 cột thì sau khi duyệt qua hết vùng dữ liệu để sắp xếp thì mất hơn 7 triệu lần. Xin hỏi có cách nào để rút ngắn số lần duyệt dữ liệu hay không?
Mã:
 Sub Sort_in_Arr()
Dim i As Long, j As Long, ii As Long
Dim Temp(), Arr(), k
Arr = Range([A1], [A1000]).Resize(, 5).Value
ReDim Temp(1 To 1, 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr) - 1
   For j = 1 To UBound(Arr) - 1
      If Arr(j, 1) > Arr(j + 1, 1) Then
         For ii = 1 To 5
            k = k + 1
            Temp(1, ii) = Arr(j, ii)
         Next
         For ii = 1 To 5
            k = k + 1
            Arr(j, ii) = Arr(j + 1, ii)
         Next        
         For ii = 1 To 5
             k = k + 1
            Arr(j + 1, ii) = Temp(1, ii)
         Next
      End If
   Next
Next
[F1].Resize(i, UBound(Arr, 2)) = Arr
MsgBox k
End Sub
 
Vì 1 lý do nào đó chúng ta buộc phải sort trực tiếp trong mảng. Nhưng nếu ta có 1 vùng dữ liệu khoảng 1000 dòng và 5 cột thì sau khi duyệt qua hết vùng dữ liệu để sắp xếp thì mất hơn 7 triệu lần. Xin hỏi có cách nào để rút ngắn số lần duyệt dữ liệu hay không?
Mã:
 Sub Sort_in_Arr()
Dim i As Long, j As Long, ii As Long
Dim Temp(), Arr(), k
Arr = Range([A1], [A1000]).Resize(, 5).Value
ReDim Temp(1 To 1, 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr) - 1
   For j = 1 To UBound(Arr) - 1
      If Arr(j, 1) > Arr(j + 1, 1) Then
         For ii = 1 To 5
            k = k + 1
            Temp(1, ii) = Arr(j, ii)
         Next
         For ii = 1 To 5
            k = k + 1
            Arr(j, ii) = Arr(j + 1, ii)
         Next        
         For ii = 1 To 5
             k = k + 1
            Arr(j + 1, ii) = Temp(1, ii)
         Next
      End If
   Next
Next
[F1].Resize(i, UBound(Arr, 2)) = Arr
MsgBox k
End Sub

Anh Hải ơi,

Em thấy có mấy Topic này:
http://www.giaiphapexcel.com/forum/showthread.php?83744-Bàn-về-thuật-toán-sort-mảng

http://www.giaiphapexcel.com/forum/showthread.php?47929-Sort-mảng-2-chiều

Anh xem có giúp gì được không.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom