⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 c语言实现的排序算法
💻 TXT
字号:

7

 '组合框combo1的单击事件,选择升降序
Private Sub Combo1_Change()
   Select Case Combo1.ListIndex
       case0
           Combo1.Text = "升序"
       case1
         Combo1.Text = "降序"
  End Select
End Sub
'字号组合框combo2的单击事件,选择排序方法
Private Sub Combo2_Change()

End Sub
'产生随机数
Private Sub Command1_Click()
  Dim number(1 To 100) As Integer
  Dim m As Integer
  Randomize
  For m = 1 To 100
  number(m) = Int(Rnd * 100) + 1
 List1.AddItem number(m)
 Next m
End Sub
'升序
Private Sub Command2_Click()
  Dim m As Integer
  Dim number(1 To 100) As Integer
  For m = 0 To 99
   number(m + 1) = List1.List(m)
  Next m
 For i = 1 To 100
 For j = 1 To 100 - i '比较次数逐渐减少
  If number(j) > number(j + 1) Then
     t = number(j)
     number(j) = number(j + 1)
   number(j + 1) = t
    End If
     List2.AddItem number(j + 1)
  Next j
  Next i
   Print
End Sub

'在load事件中,将各列表项加入到组合框combo1、组合框combo2中
Private Sub Form_Load()
Combo1.AddItem "升序"
Combo1.AddItem "降序"
Combo2.AddItem "冒泡排序"
Combo2.AddItem "插入排序"
Combo2.AddItem "桶排序"
Combo2.AddItem "选择排序"
Combo2.AddItem "希尔排序"
Combo2.AddItem "快速排序"
Combo2.AddItem "堆排序"
End Sub








Option Explicit
Option Base 1
Dim aarray()                  '定义数组
Dim h              '定义循环次数为h
Private Sub cmbSorts_Click()
  
  If cmbSorts.ListIndex > 6 Then    'cmbsorts的列表序号大于6时
        cmbOrder.Enabled = False      'cmborder不可操作
    Else
        cmbOrder.Enabled = True
    End If
End Sub

Private Sub Command1_Click()
Dim i
Dim j
    If Len(Trim$(shuzudaxiao)) = 0 Then
    shuzudaxiao = "0"                          '当数组大小为空时默认为零
    End If
    ReDim aarray(CDbl(shuzudaxiao))     '定义数组数的个数为输入数字
   
    Randomize                '初始化随机数
   weipailie.Clear           '将未排列框内容清空
    For i = 1 To CDbl(shuzudaxiao)
        j = Int((32767 - (-32768) + 1) * Rnd + (-32768))         '产生随机数
       weipailie.AddItem Str$(j)            '将产生的随机数加到下一行
        aarray(i) = j
    Next
    Command2.Enabled = True
End Sub

Private Sub Command2_Click()
Dim i, m
Dim fuction
   MousePointer = 11
    pailiehou.Clear
    i = Timer
    lblBegin = "开始时间: " & i
    h = 0                        '循环次数初值赋为0
    Select Case cmbSorts.ListIndex
    Case 0                             ' 调用子过程   进行排序
        Call BubbleSort(aarray())       '冒泡排序
    Case 1
        Call Selection(aarray())        '选择排序
    Case 2
        Call insertion(aarray())        ' 插入排序
    Case 3
        Call shellsort(aarray())        '希尔排序
    Case 4
        Call heap(aarray(), m)          '堆排序
    End Select
    lblIterations = "循环次数: " & Format$(h, "#,#")
    lblEnd = "结束时间: " & Timer
    lblDuration = "耗时: " & Timer - i & " 秒!"
    For i = 1 To UBound(aarray)
        pailiehou.AddItem aarray(i)
    Next

    MousePointer = 11

End Sub

Private Sub Form_Load()

    cmbOrder.AddItem "升序"                  '输入列表项
    
    cmbOrder.AddItem "降序"
    cmbOrder.ListIndex = 0

    cmbSorts.AddItem "冒泡排序"
    cmbSorts.AddItem "选择排序"
    cmbSorts.AddItem "插入排序"
    cmbSorts.AddItem "快速排序"
    cmbSorts.AddItem "希尔排序"
    cmbSorts.AddItem "堆排序"
    cmbSorts.AddItem "桶排序"
    cmbSorts.ListIndex = 0
    
   weipailie.AddItem "-13322"              '输入未排序列表框内容
   weipailie.AddItem "21571"
   weipailie.AddItem "-5111"
    ReDim aarray(1 To 3)
    aarray(1) = -13322
    aarray(2) = 21571
    aarray(3) = -5111
End Sub
'冒泡排序
 Sub BubbleSort(aarray())
Dim a
Dim b
Dim t
'升序
 If cmbOrder.ListIndex = 0 Then
For a = 1 To UBound(aarray)
  For b = 1 To UBound(aarray) - a          '从第一轮里找最大的值
    If aarray(b) > aarray(b + 1) Then
    t = aarray(b)
    aarray(b) = aarray(b + 1)
    aarray(b + 1) = t                    '将最大数换到最下方
    h = h + 1
    End If
  Next b
  Next a
  End If
  '降序
  If cmbOrder.ListIndex = 1 Then
For a = 1 To UBound(aarray)
  For b = 1 To UBound(aarray) - a
    If aarray(b) < aarray(b + 1) Then
    t = aarray(b)
    aarray(b) = aarray(b + 1)
    aarray(b + 1) = t
   h = h + 1
    End If
  Next b
  Next a
  End If

 End Sub
 '选择排序
Sub Selection(aarray())
Dim a
Dim b
Dim t
Dim imax
'升序
If cmbOrder.ListIndex = 0 Then
For a = 1 To UBound(aarray) - 1
   imax = a                                       '为最大值赋初值
   For b = a + 1 To UBound(aarray)
    If aarray(imax) > aarray(b) Then
    imax = b
    End If
    h = h + 1
   Next b
   t = aarray(a)                      '将最大值换到最后一位
   aarray(a) = aarray(imax)
   aarray(imax) = t
   Next a
   End If
 '降序
If cmbOrder.ListIndex = 1 Then
For a = 1 To UBound(aarray) - 1
   imax = a
   For b = a + 1 To UBound(aarray)
 If aarray(imax) < aarray(b) Then
imax = b
 
 End If
 h = h + 1
 Next b
t = aarray(a)
aarray(a) = aarray(imax)
aarray(imax) = t
Next a
End If
End Sub

李立彦 16:34:02
就在QQ聊天中
 .贾天西 . 16:34:11
 .贾天西 . 16:34:17
收到

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -