20220815笔记

2022-08-15  本文已影响0人  码农孤磊

说说常用的排序算法和其时间复杂度

类别 排序方法 时间复杂度 空间复杂度 稳定性
平均情况 最好情况 最坏情况 辅助存储
插入排序 直接插入 O(n2) O(n) O(n2) O(1) 稳定
Shell排序 O(n1.3) O(n) O(n2) O(1) 不稳定
选择排序 直接选择 O(n2) O(n2) O(n2) O(1) 不稳定
堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定
交换排序 冒泡排序 O(n2) O(n) O(n2) O(1) 稳定
快速排序 O(nlog2n) O(nlog2n) O(n2) O(1) 不稳定
归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定
基数排序 O(d(r+n)) O(d(n+rd) O(d(n+r)) O(rd+n) 稳定

注:基数排序的复杂度中,r表示关键字的基数,d表示长度,n表示关键字的个数

100万用户如何根据年龄排序

可以通过桶排序、基数排序、基数排序

深度优先和广度优先搜索算法

如何快速获取Top10热门搜索关键词

可以通过优先级队列实现,一般队列是遵循先进先出原则,而优先级队列不是。在优先级队列中数据的出队顺势是根据优先级来的,优先级越高越先出队。

单向链表反转怎么实现?

首先将头节点指向第二个节点,之后获取第二个节点,将其指向第三个节点。。以此类推,直到完全遍历转换完成。

如何判断链表有环

设定两个指针,分别为one、two。

两指针都是从头节点开始,one指针每次前进一步,two指针每次前进两步,一直前进,直到遇到尾节点或者两指针相等时退出。

如何找到单向链表的中间元素

跟上一问差不多。

设定两个指针,分别为one、two。

两指针都是从头节点开始,one指针每次前进一步,two指针每次前进两步,一直前进,当two节点为空时,one节点所处位置即为中间节点。

本文使用 文章同步助手 同步

上一篇 下一篇

猜你喜欢

热点阅读