Soutk โพสต์ 2018-10-17 14:49:23

การเรียงลำดับ ข้อมูลใน Array VB6

สอบถามครับ จะเรียงลำดับ ข้อมูลใน Array ด้วย VB6ใช้คำสั่งไหนครับ

Soutk โพสต์ 2018-10-17 15:41:51

แก้ไขครั้งสุดท้ายโดย Soutk เมื่อ 2018-10-17 15:43

Dim a(4) As String
    Dim i As Integer
    Dim t() As String
    a(0) = 100
    a(1) = 300
    a(2) = 800
    a(3) = 60
    For i = 0 To UBound(a)
       ReDim Preserve t(i)
       t(i) = Application.Large(a, i + 1)
    Next i
    Text.Text = Join(t, ",")

ลองด้วย code นี้แล้ว ERROR object required ที่ คำสั่ง application.Large

thongkorn โพสต์ 2018-10-17 16:29:09

มีวิธีการจัดเรียงมีหลายแบบครับ โค้ดตัวอย่างนี้จะแบบง่ายๆหรือ Simple Linear Sort ... หลักการง่ายๆ คือใช้ตัวแปร Array ของตัวมันเองนั่นแหละ เปรียบเทียบค่าตัวมันเอง วิธีการนี้เข้าใจง่าย แต่จะใช้เวลาในการประมวลผลค่อนข้างเยอะ ...     Dim i As Integer, j As Integer
    '// ตัวแปรชั่วคราวในการสลับค่า
    Dim temp As Integer
    Dim a(4) As Integer
    'a(0) = 100
    'a(1) = 300
    'a(2) = 800
    'a(3) = 600
    Randomize
    '// สุ่มตัวเลขทดสอบระหว่าง 1 - 9 จำนวน 4 ค่า
    For i = 0 To 3
      a(i) = Int((Rnd * 9) + 1)
      Debug.Print a(i)
    Next
    For i = 0 To UBound(a) - 1
      For j = i + 1 To 3
            '// หากค่าเดิมมีค่ามากกว่า เช่น 9 > 4 ให้ทำการ Swap หรือสลับค่า
            If Val(a(i)) > Val(a(j)) Then
                temp = a(i)
                a(i) = a(j)
                a(j) = temp
            End If
      Next
    Next
    '// แสดงคำตอบ
    For i = 0 To UBound(a) - 1
      Debug.Print a(i)
    Next



Soutk โพสต์ 2018-10-17 16:40:17

ขอบคุณครับ:):)
จะลองนำไปใช้ครับ

เวลาใช้งาน ข้อมูลในการจัดลำดับจะมาที่ละ 24 ข้อมูลครับเลยอยากหาวิธีทีประมวลผลเร็วๆ ครับ

thongkorn โพสต์ 2018-10-17 16:55:52

วิธีการ Bubble Sort ... Function BubbleSort(Arr As Variant) As Variant

    Dim Num As Integer, blnFlag As Boolean, i As Integer, Change As Integer

    Num = UBound(Arr) - LBound(Arr)
    Do
      blnFlag = False
      For i = 1 To Num
                If (Val(Arr(i - 1)) > Val(Arr(i))) Then
                  Change = Arr(i - 1)
                  Arr(i - 1) = Arr(i)
                  Arr(i) = Change
                  blnFlag = True
                End If
      Next
   Loop While blnFlag
End Function
ตัวอย่างการเรียกใช้ ...
    '// สุ่มตัวเลขระหว่าง 1 - 99 จำนวน 10 ค่า
    Dim a(10) As Integer
    Randomize
    For i = 0 To 9
      a(i) = Int((Rnd * 99) + 1)
      Debug.Print a(i)
    Next
    '//
    Call BubbleSort(a)
    '// แสดงคำตอบ
    Debug.Print "====== S O R T ======"
    For i = 1 To UBound(a)
      Debug.Print a(i)
    Next
ผลลัพธ์ ...
6
54
41
22
27
68
90
28
75
45
====== S O R T ======
6
22
27
28
41
45
54
68
75
90

Soutk โพสต์ 2018-10-18 08:39:25

thongkorn ตอบกลับเมื่อ 2018-10-17 16:55
วิธีการ Bubble Sort ...
ตัวอย่างการเรียกใช้ ...



ขอบคุณอย่างแรงครับ อาจารย์:'(:'(

หน้า: [1]
ดูในรูปแบบกติ: การเรียงลำดับ ข้อมูลใน Array VB6