排序算法比较

排序算法比较

排序算法好多种,通过它们之间的比较掌握它们的适用场景,优缺点。时间复杂度参考geeksforgeeks
这篇博客会持续更新。

选择排序 vs 插入排序

大量交换 vs 最少交换
插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。可以通过二分查找改进查找插入位置的效率。
插入排序需要反复移动数据,为新插入的数据提供空间。所以它的改进版本希尔排序通过将数据分为几个区域可以让数据在插入时就离最终位置更近一点,从而减少交换次数。(在希尔排序中,比较是最主要的操作,而不是交换)

选择排序首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序每次会将一个元素放到最终位置,所以至多进行n-1次交换。
但是选择排序必须进行n*(n-1)/2次比较操作。
分析:
共同点:二者都常常用于in-place的场景。最坏时间复杂度 O ( n 2 ) O(n^2) O(n2),平均时间复杂度 Θ ( n 2 ) \Theta(n^2) Θ(n2)
不同点:

  1. 插入排序最坏交换 O ( n 2 ) O(n^2) O(n2)次。选择排序交换次数最多 n − 1 n-1 n1次。
  2. 交换是插入排序的主要操作,比较是选择排序的主要操作。
  3. 插入排序最优时间复杂度 Ω ( n ) \Omega(n) Ω(n),选择排序最优时间复杂度是 Ω ( n 2 ) \Omega(n^2) Ω(n2).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值