十大排序算法运行速度比较

(单位纳秒us)

数据量1010010001万10万100万1千万1亿

内存占用

40B

400B

3.9K

39.0K

390K

3.81M

38.1M

381M

冒泡排序

20

40

820

79,600

7,676,124

插入排序

10

10

180

17,842

1,794,997

选择排序

10

10

300

28,283

2,833,339

快速排序

10

20

90

810

8,501

95,502

964,722

10,148,458

希尔排序

10

10

30

340

4,950

76,449

1,282,982

21,124,892

堆排序

40

40

70

510

6,190

82,750

1,187,910

16,861,891

归并排序

20

20

40

340

3,930

46,845

538,978

6,117,406

计数排序

10

10

20

40

390

7,800

173,752

2,232,933

基数排序

20

20

30

200

2,270

25,763

304,298

3,424,614

桶排序

40

40

60

160

2,050

45,785

653,693

10,866,139

(基数排序是10进制,9位数排序。数据为1-N的随机数,N就是数据量大小)

冒泡排序比选择排序要慢狠多狠多,虽然比较的次数几乎一样。这主要是因为冒泡排序几乎没有缓存命中。

快速排序所有数量下都有稳定的发挥。尤其是数据规模超过内存上限时,实行分块比较很适合,而且没有辅助内存的需求。

希尔排序在数据量规模不大的时候比快速排序要好。这主要也是缓存命中率的影响。

基数排序已经非常接近计数排序了,当将基数增加到20,位数降到7时,1亿的排序时间是3,432,145,并没有太大区别。当将基数增加到100,位数降到4时,1亿的排序时间是1,979,761。比计数排序更快一点,位数减少循环次数就变少了。但是居然比计数排序还快,难道有bug?

桶排序数据规模较大时,速度变得慢了。应该是因为桶的利用率不高。测试数据的最大值就是数据的数量,因此平均1个桶里只有一个数据。分桶后又进行了插入排序,cpu执行不利索。当数据范围是[1,N/4)时,1亿个排序时间是7,191,853,更快了一点。

git 地址:https://github.com/v-star0719/SortAlgorithm

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值