排序算法总结

1、十大排序算法

冒泡排序(Bubble Sort)
插入排序(Insertion Sort)
希尔排序(Shell Sort)
选择排序(Selection Sort)
快速排序(Quick Sort)
归并排序(Merge Sort)
堆排序(Heap Sort)
计数排序(Counting Sort)
桶排序(Bucket Sort)
基数排序(Radix Sort)

2、应用场景

十大排序算法详细讲解,以及各种应用场景

  • 数据特征
    大量重复的元素,三路快排是更好地选择
    取值范围非常有限,计数排序是更好的选择
    需要稳定排序,归并排序是更好的选择
  • 存储状况
    快排是依赖于数组的随机存储
    链表存储的,归并排序是更好的选择,
    数据量很大或者内存很小,不足以装载在内存里,需要使用外排序算法。

2.1 冒泡排序(Bubble Sort)

一般作为学习理解排序原理时使用,实际应用中不会使用

2.2 插入排序(Insertion Sort)

如果大部分数据距离它正确的位置很近或者近乎有序?例如银行的业务完成的时间
如果是这样的话,插入排序是更好的选择。

2.2 希尔排序(Shell Sort)

相对于直接插入排序,希尔排序要高效很多,因为当gap 值较大时,对子数组进行插入排序时要移动的元素很少,元素移动的距离很大,这样效率很高;在gap逐渐减小过程中,数组中元素已逐渐接近排序的状态,所以需要移动的元素逐渐减少;当gap为1时,相当于进行一次直接插入排序,但是各元素已接近排序状态,需要移动的元素很少且移动的距离都很小。

2.2 选择排序(Selection Sort)

2.2 快速排序(Quick Sort)

2.2 归并排序(Merge Sort)

内存空间不足的时候使用归并排序,能够使用并行计算的时候使用归并排序。

2.2 堆排序(Heap Sort)

堆排序适合于数据量非常大的场合(百万数据)。
堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可能会发生堆栈溢出错误。
堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来再次重建堆,交换数据,依次下去,就可以排序所有的数据。

2.2 计数排序(Counting Sort)

计数排序需要占用大量空间,它仅适用于数据比较集中的情况。比如 [0 100],[10000 19999] 这样的数据。

2.2 桶排序(Bucket Sort)

2.2 基数排序(Radix Sort)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值