数组a(10000) ,按大小顺序排列,并且除掉相等的数据,VBA编程怎么做

 我来答
snddd2000
2010-09-30 · TA获得超过4270个赞
知道大有可为答主
回答量:2266
采纳率:0%
帮助的人:1678万
展开全部
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
如影啊随行
2010-09-30 · TA获得超过4762个赞
知道小有建树答主
回答量:213
采纳率:80%
帮助的人:106万
展开全部
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

祝你成功!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式