[06数据结构]排序算法

9 篇文章 0 订阅 ¥89.90 ¥99.00

本章我可能会犯错、要注意的点:

  1. 注意思考为什么会有那么多排序?   每个排序的特点价值在哪?   分别适用于什么场景?
  2. O(N)是排序的天花板,任何排序都不可能小于O(N)。
  3. 注意:排序的逐渐思考的过程;不要仅仅关注最终代码模板!
  4. 排序的稳定性概念:具有相同的关键字的记录,排序后,相对位置保持不变。
  5. 希尔排序,多次预排序  +  1次直接插入排序
  6. 希尔排序,gap越大,预排序越快,预排后越不接近有序
  7. 冒泡排序虽然简单,但是写法上要注意边界控制!  边界易错~
  8. 快速排序是基于分治的一种算法。
  9. 快速排序中的单趟排序后的目标(选最左边做key):使得最终L左边的值要比key小,R右边的值要比key大
  10. 快速排序:选左边的值做key,右边先走       ==>  保证了,左右相遇时的值,一定比key小                                                                选右边的值做key,左边先走       ==>  保证了,左右相遇时的值,一定比key大
  11. 快速排序中的 单趟排序的时间复杂度是:O(N)    ;     
  12. 快速排序的最好的时间复杂度是:O(N * logN)         ;      最坏是:O(N^2)
  13. 快速排序的缺陷是对于有序数据的排序性能非常差!!O(N^2)

  14. 注意:递归的缺点有两点~

  15. 快速排序的两种优化方案:(1)三数取中:三数取中法选key(2)小区间优化:递归到小的子区间时,可以考虑使用插入排序

  16. 快速排序对于2   2    2   2...(数值一样的)和2  3   2   3...这种不适合!

  17. 归并排序非递归版本的思想简单,但是要非常非常注意它的边界修正!   极其恶心!

  18. 计数排序在数组中数值的大小范围比较集中的情况下,可以达到O(N),是一个非常牛逼的排序

  19. 计数排序也可以负数进行排序,但是不适合,一般对负数排序不采用计数排序。

目录

1.排序的概念及其运用

1.1排序的概念

1.2排序运用

1.3常见排序算法

2.常见排序算法的实现

2.1插入排序

(1)直接插入排序

(2)希尔排序

2.2选择排序

(1)选择排序

(2)堆排序

2.3交换排序

(1)冒泡排序

横向对比三个排序的优劣 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.阿Q.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值