一、为什么要学习数据结构算法
例子:抖音直播排行榜功能
解决方案:
礼物数量存储在Redis-zset中,使用skiplist使得元素整体有序
使用Redis集群,避免单机压力过大,使用主从算法、分片算法
保证集群原信息的稳点,使用一致性算法
后端使用缓存算法(LRU)降低Redis压力,展示房间排名
二、经典的排序算法
1、插入排序(Insertion Sort) 主要思想可以想象为打牌
将元素不断插入已经排好的array中
起初只有一个元素5,其本身是一个有序序列
后续元素插入有序序列中,即不断交换,直到找到第一个比其小的元素
缺点:平均和最坏情况的时间复杂度高达O(n^2)
优点:最好情况时间复杂度为O(n)
2、快速排序(Quick Sort)
分治思想,不断分割序列整体有序
选定一个pivot(轴点)
使用pivot分割序列,分成元素比pivot大和元素比pivot小两个序列
缺点:最坏情况的时间复杂度高达O(n^2)
优点:平均情况的时间复杂度为O(n*logn)
3、堆排序(Heap Sort)
利用堆的性质形成的排序算法
构造一个大顶堆
将根节点(最大元素)交换到最后一个位置,调整整个堆,如此反复
缺点:最好的情况的时间复杂度高达O(n*logn)
优点:最坏的情况的时间复杂度为O(n*logn)