+ Trả lời chủ đề
Hiện kết quả từ 1 tới 1 của 1

Chủ đề: Sắp xếp mảng dữ liệu không sử dụng vòng lặp

  1. #1
    Status : ngovanhieu_Alpha đang ẩn
    Tham gia ngày : Aug 2011
    Bài gửi : 200

    Sắp xếp mảng dữ liệu không sử dụng vòng lặp

    Sắp xếp mảng dữ liệu không sử dụng vòng lặp
    Xin gửi các bạn 1 hàm sắp xếp mảng dữ liệu không sử dụng vòng lặp. arr là mảng cần sắp xếp, isText=true là sắp xếp mảng kiểu chuỗi, ngược lại là kiểu số(mặc định là kiểu số), isDESC=true là sắp xếp giảm dần, ngược lại là tăng dần(mặc định là tăng dần).
    Đây là thủ thuật lợi dụng tính năng sắp xếp có sẵn trên ngôn ngữ khác(JavaScript) để thực hiện, có hạn chế là phải chuyển qua 1 chuỗi trung gian nên khi trả về luôn là mảng chuỗi, thích hợp cho việc hiển thị, còn dùng để tính toán thì sẽ có hạn chế. Về tốc độ thì tôi chưa test kỹ, nhưng có vẻ khả quan hơn phương pháp sử dụng vòng lặp thông thường.

    Mã:
    Public Function SortArray(arr, Optional isText As Boolean = False, Optional isDESC As Boolean = False)
        Dim sCommand As String
        sCommand = "('" & Join(arr, vbBack) & "').split('" & vbBack & "').sort("
        If isText Then
            sCommand = sCommand & ")"
        Else
            sCommand = sCommand & "function(a,b){return (a-b)})"
        End If
        If isDESC Then sCommand = sCommand & ".reverse()"
        sCommand = sCommand & ".join('" & vbBack & "')"
        Dim objSC
        Set objSC = CreateObject("MSScriptControl.ScriptControl")
        objSC.Language = "JavaScript"
        SortArray = Split(objSC.Eval(sCommand), vbBack)
    End Function
    Sưu tầm: http://www.giaiphapexcel.com/forum/s...g-l%E1%BA%B7p&
    Lần sửa cuối bởi ngovanhieu_Alpha; 06-08-2011 lúc 03:10 PM

+ Trả lời chủ đề

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
Trang Chủ Việc Làm Gia Sư Gia sư