大O记法与排序算法

我们在描述算法的时间复杂度时都会用到大O记法,那么什么是大O记法呢?百度百科(大O符号)给出了比较准确的定义:它是用来描述一个函数的无穷大渐近。举个例子,解决一个规模为 n 的问题所花费的时间(或者所需步骤的数目)可以被求得:T(n) = 4n^2 - 2n + 2,那么当 n 趋近于无穷大的情况下,n方项起主导作用,所以它的时间复杂度可以被记为:O(n^2)
更加详细的介绍可见一下博客:
大O符号与时间复杂度
大O记号
常见算法的时间复杂度如下图所示:
常见排序算法的时间复杂度
排序算法的核心就是:Compare And Swap,简称CAS。
具体的排序算法介绍见博客:常用排序算法总结(一)
堆排序算法涉及到堆这种数据结构,详细的介绍如下:图解排序算法(三)之堆排序
为什么要介绍排序算法?因为排序算法是其它高效算法的基础:一堆数据只有排成顺序,我们才方便对它们的增删改查操作。
上面介绍的只是对数组的排序算法,那么如果数据的存储结构是链表呢?
下面的博客介绍了针对链表的排序算法,基本思想和数组的排序算法类似。
单链表排序
实现双链表的排序
PS. 如果数据结构是二叉排序树的话,直接对树进行遍历就会得到有序的数据。
常见的树的种类及相关的操作有很多,下面是最常用的红黑数的详解:
Sedgewick的红黑树
还有一个关于数据结构与算法的博客:
数据结构与算法学习笔记之 适合大规模的数据排序
最后放上一篇比较好的关于DDD的文章:
从壹开始微服务 [ DDD ] 之四 ║让你明白DDD的小故事 & EFCore初探

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值