Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6522|回复: 13

[分享] 写了几个常见的排序方法,和大家共勉

[复制链接]
发表于 2007-12-1 17:40 | 显示全部楼层 |阅读模式

写了几个常见的排序方法:选择排序两个、直接插入两个、冒泡排序两个(当然都一定还有优化的空间),和大家共勉且请各位斧正。其余的排序如希尔排序、快速排序、归并排序等等暂没写。

 

iff2kC8H.rar (241.05 KB, 下载次数: 169)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2007-12-1 18:50 | 显示全部楼层

在学校学过一点,全忘光了[em04]

谢谢天堂鼠[em17]
回复

使用道具 举报

发表于 2007-12-1 21:44 | 显示全部楼层

学习学习ing,排序没学过,晕呼呼[em06]
回复

使用道具 举报

发表于 2007-12-2 06:59 | 显示全部楼层

学习
回复

使用道具 举报

发表于 2007-12-2 13:34 | 显示全部楼层

先收藏 有时间再看 谢谢 !!!!!!
回复

使用道具 举报

发表于 2008-2-29 08:32 | 显示全部楼层

再看排序!

回复

使用道具 举报

发表于 2008-3-1 05:28 | 显示全部楼层

收藏,谢谢 !!!!!!
回复

使用道具 举报

发表于 2008-3-1 11:36 | 显示全部楼层

数据排序要看数据类型,不能死套,如果是整型,象你上面附件的数据,

运行下面代码排序不会超过0.1秒:呵呵

Sub 飞翔排序法()
Dim a, n As Long, t As Double
a = [a3:a10002]
ReDim b(0 To WorksheetFunction.Max(a)) As Long
t = Timer
For i = 1 To UBound(a)
    If b(a(i, 1)) = 0 Then
        b(a(i, 1)) = 1
    Else
        b(a(i, 1)) = b(a(i, 1)) + 1
    End If
Next
For i = 0 To UBound(b)
    For j = 1 To b(i)
        n = n + 1
        a(n, 1) = i
    Next
Next
[i3:i10002] = a
MsgBox Format(Timer - t, "0.00000" & "秒")
End Sub

[此贴子已经被作者于2008-3-1 12:03:08编辑过]
回复

使用道具 举报

发表于 2008-3-1 12:08 | 显示全部楼层

呵呵...泼楼主冷水了

回复

使用道具 举报

发表于 2008-3-1 13:10 | 显示全部楼层

还是用MS自带的好

Sub px()
    t = Timer
    Range("A3:A10002").Copy Range("j3")
    Range("j3:j10002").Sort Range("j3"), xlAscending, , , , , , xlNo, , , xlSortColumns
    [j2] = Timer - t
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 17:49 , Processed in 0.269032 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表