数组a(10000) ,按大小顺序排列,并且除掉相等的数据,VBA编程怎么做
2个回答
展开全部
1、选择法排序
算法思想:
1)对有n+1个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置;
2)除第1 个数外,其余n个数中选最小或最大的数,与第2个数交换位置;
3)依次类推,选择了n次后,这个数列已按升序排列。
例:For i = 0 To n - 1
p = i
For j = i + 1 To n
If a(p) > a(j) Then p = j
Next j
temp = a(i)
a(i) = a(p)
a(p) = temp
Next i
2、 冒泡法排序(递增)
算法思想:(将相邻两个数比较,大的调到后头)
1)有n+1个数(存放在数组a(n)中),第一趟将每相邻两个数比较,大的调到后头,经n次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
2)第二趟对余下的n个数(最大的数已“沉底”)按上法比较,经n-1次两两相邻比较后得次大的数;
3)依次类推,n+1个数共进行n趟比较。
For i=0 To n - 1
For j = 0 To n-1-i
If a(j) > a(j+1) Then
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
End if
Next j
Next i
http://zhidao.baidu.com/question/148952649.html?fr=ala0
算法思想:
1)对有n+1个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置;
2)除第1 个数外,其余n个数中选最小或最大的数,与第2个数交换位置;
3)依次类推,选择了n次后,这个数列已按升序排列。
例:For i = 0 To n - 1
p = i
For j = i + 1 To n
If a(p) > a(j) Then p = j
Next j
temp = a(i)
a(i) = a(p)
a(p) = temp
Next i
2、 冒泡法排序(递增)
算法思想:(将相邻两个数比较,大的调到后头)
1)有n+1个数(存放在数组a(n)中),第一趟将每相邻两个数比较,大的调到后头,经n次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
2)第二趟对余下的n个数(最大的数已“沉底”)按上法比较,经n-1次两两相邻比较后得次大的数;
3)依次类推,n+1个数共进行n趟比较。
For i=0 To n - 1
For j = 0 To n-1-i
If a(j) > a(j+1) Then
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
End if
Next j
Next i
http://zhidao.baidu.com/question/148952649.html?fr=ala0
展开全部
Sub Macro1()
'
Dim a(10000) As Integer
Dim i, k, l, m As Integer
i = 1
Do While Worksheets("sheet1").Cells(i, 1) <> "" '取A列数
a(i) = Worksheets("sheet1").Cells(i, 1)
i = i + 1
Loop
For l = 1 To i - 2 '排序
For k = 1 To i - 2
If a(k) < a(k + 1) Then
m = a(k + 1)
a(k + 1) = a(k)
a(k) = m
End If
If a(k) = a(k + 1) Then
a(k) = ""
End If
Next
Next
For k = 1 To i - 2
Worksheets("sheet1").Cells(k, 2) = a(k) '在B列输出数据,有几个重复上面有几个空单元格
Next
End Sub
祝你成功!
'
Dim a(10000) As Integer
Dim i, k, l, m As Integer
i = 1
Do While Worksheets("sheet1").Cells(i, 1) <> "" '取A列数
a(i) = Worksheets("sheet1").Cells(i, 1)
i = i + 1
Loop
For l = 1 To i - 2 '排序
For k = 1 To i - 2
If a(k) < a(k + 1) Then
m = a(k + 1)
a(k + 1) = a(k)
a(k) = m
End If
If a(k) = a(k + 1) Then
a(k) = ""
End If
Next
Next
For k = 1 To i - 2
Worksheets("sheet1").Cells(k, 2) = a(k) '在B列输出数据,有几个重复上面有几个空单元格
Next
End Sub
祝你成功!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询