ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 3764|ตอบกลับ: 5

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

[คัดลอกลิงก์]

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58

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

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58
 เจ้าของ| โพสต์ 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

311

กระทู้

502

โพสต์

6052

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6052
โพสต์ 2018-10-17 16:29:09 | ดูโพสต์ทั้งหมด

มีวิธีการจัดเรียงมีหลายแบบครับ โค้ดตัวอย่างนี้จะแบบง่ายๆหรือ Simple Linear Sort ... หลักการง่ายๆ คือใช้ตัวแปร Array ของตัวมันเองนั่นแหละ เปรียบเทียบค่าตัวมันเอง วิธีการนี้เข้าใจง่าย แต่จะใช้เวลาในการประมวลผลค่อนข้างเยอะ ...
  1.     Dim i As Integer, j As Integer
  2.     '// ตัวแปรชั่วคราวในการสลับค่า
  3.     Dim temp As Integer
  4.     Dim a(4) As Integer
  5.     'a(0) = 100
  6.     'a(1) = 300
  7.     'a(2) = 800
  8.     'a(3) = 600
  9.     Randomize
  10.     '// สุ่มตัวเลขทดสอบระหว่าง 1 - 9 จำนวน 4 ค่า
  11.     For i = 0 To 3
  12.         a(i) = Int((Rnd * 9) + 1)
  13.         Debug.Print a(i)
  14.     Next
  15.     For i = 0 To UBound(a) - 1
  16.         For j = i + 1 To 3
  17.             '// หากค่าเดิมมีค่ามากกว่า เช่น 9 > 4 ให้ทำการ Swap หรือสลับค่า
  18.             If Val(a(i)) > Val(a(j)) Then
  19.                 temp = a(i)
  20.                 a(i) = a(j)
  21.                 a(j) = temp
  22.             End If
  23.         Next
  24.     Next
  25.     '// แสดงคำตอบ
  26.     For i = 0 To UBound(a) - 1
  27.         Debug.Print a(i)
  28.     Next
คัดลอกไปที่คลิปบอร์ด


  

สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58
 เจ้าของ| โพสต์ 2018-10-17 16:40:17 | ดูโพสต์ทั้งหมด

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

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

311

กระทู้

502

โพสต์

6052

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6052
โพสต์ 2018-10-17 16:55:52 | ดูโพสต์ทั้งหมด

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

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

  3.     Num = UBound(Arr) - LBound(Arr)
  4.     Do
  5.         blnFlag = False
  6.         For i = 1 To Num
  7.                 If (Val(Arr(i - 1)) > Val(Arr(i))) Then
  8.                     Change = Arr(i - 1)
  9.                     Arr(i - 1) = Arr(i)
  10.                     Arr(i) = Change
  11.                     blnFlag = True
  12.                 End If
  13.         Next
  14.      Loop While blnFlag
  15. End Function
คัดลอกไปที่คลิปบอร์ด

ตัวอย่างการเรียกใช้ ...
  1.     '// สุ่มตัวเลขระหว่าง 1 - 99 จำนวน 10 ค่า
  2.     Dim a(10) As Integer
  3.     Randomize
  4.     For i = 0 To 9
  5.         a(i) = Int((Rnd * 99) + 1)
  6.         Debug.Print a(i)
  7.     Next
  8.     '//
  9.     Call BubbleSort(a)
  10.     '// แสดงคำตอบ
  11.     Debug.Print "====== S O R T ======"
  12.     For i = 1 To UBound(a)
  13.         Debug.Print a(i)
  14.     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

สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

12

โพสต์

58

เครดิต

Member

Rank: 2

เครดิต
58
 เจ้าของ| โพสต์ 2018-10-18 08:39:25 | ดูโพสต์ทั้งหมด

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

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

ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-26 13:55 , Processed in 0.291190 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้